uWebSockets
uWebSockets copied to clipboard
uSockets header and lib not installed system-wide
Problem description:
I have installed uWebSockets on my Ubuntu system, but I noticed that the libusockets.h
header file and the uSockets.a
archive file from the uSockets dependency are not installed system-wide. This causes problems when trying to use uWebSockets in my CMake project, as the required header and archive files are not found.
Steps to reproduce:
- Clone and build uWebSockets using the provided instructions in the README.
- Install uWebSockets using
sudo make install
. - Notice that
libusockets.h
anduSockets.a
files are not installed in the system include directories (e.g.,/usr/local/include/uWebSockets
) and library directories (e.g.,/usr/local/lib
or/usr/lib
).
Expected behavior:
The libusockets.h
header file and the uSockets.a
archive file should be installed system-wide along with the uWebSockets headers so that they are available for use in projects that depend on uWebSockets.
Possible solutions:
- Update the uWebSockets Makefile to install the
libusockets.h
header file and theuSockets.a
archive file when installing uWebSockets. - Provide an installation target in the uSockets Makefile to allow for system-wide installation of uSockets headers and library files.
Additional context:
I was able to manually copy the libusockets.h
file to my system include directory, and also copy the uSockets.a archive file as a workaround. However, this is not an ideal solution, as it requires manual work to be done(I wrote a script to do all things).
Please let me know if there is a better solution or if this issue can be addressed in future updates of uWebSockets/uSockets. Thank you!
how did you copy libusockets.h
and uSockets.a
files? where are they?
Make sure you clone with the git submodule. I did this:
git clone --recurse-submodules https://github.com/uNetworking/uWebSockets
Then, you want to run make
and then make install
. The libusockets.h
and uSockets.a
will be in the subdirectory uSockets
of the repository that we cloned. libusockets.h
is in uWebSockets/uSockets/src
and the uSockets.a
is in uWebSockets/uSockets
.
I did the following:
- Copy the
libusockets.h
to/usr/local/include
- Copy the
uSockets.a
to/usr/local/lib
Then, to get my project to compile, the following CMakeLists.txt
worked for me:
cmake_minimum_required(VERSION 3.15)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
project(HomechatServer)
find_library(USOCKETS_LIBRARY uSockets.a PATHS /usr/local/lib REQUIRED)
find_package(ZLIB REQUIRED)
set(source_dir ${CMAKE_CURRENT_SOURCE_DIR}/src)
file(GLOB source_files
${source_dir}/*.cpp
)
add_executable(${PROJECT_NAME} ${source_files})
target_include_directories(${PROJECT_NAME} PUBLIC ${source_dir}/include)
target_link_libraries(${PROJECT_NAME} ${USOCKETS_LIBRARY})
target_link_libraries(${PROJECT_NAME} ZLIB::ZLIB)
Note: I needed ZLIB as a dependency to make it work because one of the uWebSocket headers uses it.
Here is the project that I am using it for (work in progress as of time of this comment).