diff options
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..727108f --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,67 @@ +cmake_minimum_required(VERSION 3.19) + +project( + libsock + VERSION 1.0.0 + DESCRIPTION "Minimal C++ socket library") + +add_compile_definitions(LIBSOCK_VERSION="${PROJECT_VERSION}") + +include(CTest) +include(GNUInstallDirs) + +set(PREFIX ${CMAKE_INSTALL_PREFIX}) +set(INCLUDE ${CMAKE_INSTALL_FULL_INCLUDEDIR}) +set(LIBDIR ${CMAKE_INSTALL_FULL_LIBDIR}) + +configure_file(libsock.pc.in libsock.pc @ONLY) + +set(CMAKE_CXX_STANDARD 23) +add_compile_options( + -Wall + -Wextra + -Wpedantic + -Wno-unused-parameter + -Wno-unused-value + -Wno-missing-field-initializers + -Wno-narrowing + -Wno-pointer-arith) +set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE) + +if(CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES DEBUG) + message(STATUS "Configuring libsock in Debug") + add_compile_definitions(LIBSOCK_DEBUG) +else() + add_compile_options(-O3) + message(STATUS "Configuring libsock in Release") +endif() + +file(GLOB_RECURSE SRCFILES CONFIGURE_DEPENDS "src/*.cpp" "include/*.hpp") +file(GLOB_RECURSE PUBLIC_HEADERS CONFIGURE_DEPENDS "include/*.hpp") + +find_package(PkgConfig REQUIRED) + +add_library(libsock SHARED ${SRCFILES}) +target_include_directories( + libsock + PUBLIC "./include" + PRIVATE "./src") +set_target_properties(libsock PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION 1) + +# tests add_custom_target(tests) +# +# add_executable(libsock_socket "tests/socket.cpp") +# target_link_libraries(libsock_socket PRIVATE libsock) add_test( NAME "Socket" +# WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests COMMAND libsock_socket "socket") +# add_dependencies(tests libsock_socket) +# +# add_executable(libsock_connection "tests/connection.cpp") +# target_link_libraries(libsock_connection PRIVATE libsock) add_test( NAME +# "Connection" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests COMMAND +# libsock_connection "connection") add_dependencies(tests libsock_connection) +# +# Installation +install(TARGETS libsock) +install(DIRECTORY "include/libsock" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +install(FILES ${CMAKE_BINARY_DIR}/libsock.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) |
