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.handuSockets.afiles are not installed in the system include directories (e.g.,/usr/local/include/uWebSockets) and library directories (e.g.,/usr/local/libor/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.hheader file and theuSockets.aarchive 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.hto/usr/local/include - Copy the
uSockets.ato/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).