diff --git a/CMakeLists.txt b/CMakeLists.txt index 335b1ad..e2e8a4d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,9 @@ cmake_minimum_required(VERSION 2.8.0 FATAL_ERROR) set(PROJECT_NAME wavelib) -project(${PROJECT_NAME} CXX C) +project(${PROJECT_NAME} C) +include(GNUInstallDirs) # src root path set(WAVELIB_SRC_ROOT ${PROJECT_SOURCE_DIR} CACHE PATH "Wavelib source root") @@ -41,6 +42,7 @@ include_directories(${COMMON_BIN_PATH}) if(BUILD_UT) include(CTest) enable_testing() + enable_language(CXX) add_subdirectory(unitTests) endif() @@ -48,4 +50,6 @@ add_subdirectory(src) add_subdirectory(auxiliary) add_subdirectory(test) -install(DIRECTORY ${WAVELIB_SRC_ROOT}/include/ DESTINATION include FILES_MATCHING PATTERN "*.h") +install(DIRECTORY ${WAVELIB_SRC_ROOT}/header/ + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + FILES_MATCHING PATTERN "*.h") diff --git a/auxiliary/CMakeLists.txt b/auxiliary/CMakeLists.txt index 51c836d..1da2c08 100644 --- a/auxiliary/CMakeLists.txt +++ b/auxiliary/CMakeLists.txt @@ -12,5 +12,9 @@ target_link_libraries(wauxlib wavelib) set_property(TARGET wauxlib PROPERTY FOLDER "lib") -target_include_directories(wauxlib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) +target_include_directories(wauxlib PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) +install(TARGETS wauxlib + EXPORT wavelib-targets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index dc9592a..1eb6123 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -24,8 +24,38 @@ set(HEADER_FILES conv.h ) add_library(wavelib STATIC ${SOURCE_FILES} ${HEADER_FILES}) - + +include(CheckSymbolExists) + +# https://stackoverflow.com/questions/32816646/can-cmake-detect-if-i-need-to-link-to-libm-when-using-pow-in-c +if(NOT POW_FUNCTION_EXISTS AND NOT NEED_LINKING_AGAINST_LIBM) + check_symbol_exists(pow "math.h" POW_FUNCTION_EXISTS) + if(NOT POW_FUNCTION_EXISTS) + unset(POW_FUNCTION_EXISTS CACHE) + list(APPEND CMAKE_REQUIRED_LIBRARIES m) + check_symbol_exists(pow "math.h" POW_FUNCTION_EXISTS) + if(POW_FUNCTION_EXISTS) + set(NEED_LINKING_AGAINST_LIBM True CACHE BOOL "" FORCE) + else() + message(FATAL_ERROR "Failed making the pow() function available") + endif() + endif() +endif() + +if(NEED_LINKING_AGAINST_LIBM) + target_link_libraries(wavelib PUBLIC m) +endif() + set_property(TARGET wavelib PROPERTY FOLDER "lib") -target_include_directories(wavelib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}../header) +target_include_directories(wavelib PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}../header) +install(TARGETS wavelib + EXPORT wavelib-targets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + +install(EXPORT wavelib-targets + FILE wavelib-config.cmake + NAMESPACE wavelib:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/wavelib)