From 8642e827c4d1ffdb37d27607f2544013d5630ccc Mon Sep 17 00:00:00 2001 From: Jojo-1000 <33495614+Jojo-1000@users.noreply.github.com> Date: Thu, 9 Apr 2020 23:36:47 +0200 Subject: [PATCH] Link static library for tests instead of building sources. --- CMakeLists.txt | 4 ++-- src/CMakeLists.txt | 42 +++++++++++++++++++----------------------- test/CMakeLists.txt | 34 +++++++++++++++++----------------- 3 files changed, 38 insertions(+), 42 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dcb1055..6be1cb7 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,8 +47,8 @@ set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH "Installation director # target for uninstall if(NOT TARGET uninstall) configure_file( - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" + "${PROJECT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" + "${PROJECT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) add_custom_target(uninstall diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 86b915d..04063c7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,44 +1,40 @@ -file(GLOB hueplusplus_HEADERS include/*.h include/*.hpp) set(hueplusplus_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/BaseHttpHandler.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/ExtendedColorHueStrategy.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/ExtendedColorTemperatureStrategy.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/Hue.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/HueCommandAPI.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/HueDeviceTypes.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/HueException.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/HueLight.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/SimpleBrightnessStrategy.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/SimpleColorHueStrategy.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/SimpleColorTemperatureStrategy.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/UPnP.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/Utils.cpp + BaseHttpHandler.cpp + ExtendedColorHueStrategy.cpp + ExtendedColorTemperatureStrategy.cpp + Hue.cpp + HueCommandAPI.cpp + HueDeviceTypes.cpp + HueException.cpp + HueLight.cpp + SimpleBrightnessStrategy.cpp + SimpleColorHueStrategy.cpp + SimpleColorTemperatureStrategy.cpp + UPnP.cpp + Utils.cpp ) # on windows we want to compile the WinHttpHandler if(WIN32) set(hueplusplus_SOURCES ${hueplusplus_SOURCES} - ${CMAKE_CURRENT_SOURCE_DIR}/WinHttpHandler.cpp PARENT_SCOPE + WinHttpHandler.cpp ) endif() # whereas on linux we want the LinHttpHandler if(UNIX) set(hueplusplus_SOURCES ${hueplusplus_SOURCES} - ${CMAKE_CURRENT_SOURCE_DIR}/LinHttpHandler.cpp PARENT_SCOPE + LinHttpHandler.cpp ) endif() if(ESP_PLATFORM) set(hueplusplus_SOURCES ${hueplusplus_SOURCES} - ${CMAKE_CURRENT_SOURCE_DIR}/LinHttpHandler.cpp PARENT_SCOPE + LinHttpHandler.cpp ) endif() -# Propagate to parent scope for tests -set(hueplusplus_SOURCES ${hueplusplus_SOURCES} PARENT_SCOPE) - # hueplusplus shared library add_library(hueplusplusshared SHARED ${hueplusplus_SOURCES}) target_compile_features(hueplusplusshared PUBLIC cxx_std_14) @@ -50,12 +46,12 @@ add_library(hueplusplusstatic STATIC ${hueplusplus_SOURCES}) target_compile_features(hueplusplusstatic PUBLIC cxx_std_14) install(TARGETS hueplusplusstatic DESTINATION lib) target_include_directories(hueplusplusstatic PUBLIC $ $) -install(FILES ${hueplusplus_HEADERS} DESTINATION include/hueplusplus) +#install(FILES ${hueplusplus_HEADERS} DESTINATION include/hueplusplus) # Export the package for use from the build-tree # (this registers the build-tree with a global CMake-registry) export(PACKAGE hueplusplus) # Create the hueplusplus-config.cmake -configure_file ("${hueplusplus_SOURCE_DIR}/cmake/hueplusplus-config.cmake.in" "${hueplusplus_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/hueplusplus-config.cmake" @ONLY) +configure_file ("${PROJECT_SOURCE_DIR}/cmake/hueplusplus-config.cmake.in" "${hueplusplus_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/hueplusplus-config.cmake" @ONLY) # Install hueplusplus-config.cmake -install(FILES "${hueplusplus_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/hueplusplus-config.cmake" DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev) +install(FILES "${PROJECT_BINARY}${CMAKE_FILES_DIRECTORY}/hueplusplus-config.cmake" DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 050faf0..d11944e 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -2,14 +2,14 @@ configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt) execute_process(COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} . RESULT_VARIABLE result - WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/hueplusplus/test/googletest-download" + WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/test/googletest-download" ) if(result) message(FATAL_ERROR "CMake step for googletest failed: ${result}") endif() execute_process(COMMAND "${CMAKE_COMMAND}" --build . RESULT_VARIABLE result - WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/hueplusplus/test/googletest-download" + WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/test/googletest-download" ) if(result) message(FATAL_ERROR "Build step for googletest failed: ${result}") @@ -27,32 +27,32 @@ add_subdirectory(${CMAKE_BINARY_DIR}/googletest-src EXCLUDE_FROM_ALL # define all test sources set(TEST_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/test_BaseHttpHandler.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/test_ExtendedColorHueStrategy.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/test_ExtendedColorTemperatureStrategy.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/test_Hue.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/test_HueLight.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/test_HueCommandAPI.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/test_Main.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/test_SimpleBrightnessStrategy.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/test_SimpleColorHueStrategy.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/test_SimpleColorTemperatureStrategy.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/test_UPnP.cpp + test_BaseHttpHandler.cpp + test_ExtendedColorHueStrategy.cpp + test_ExtendedColorTemperatureStrategy.cpp + test_Hue.cpp + test_HueLight.cpp + test_HueCommandAPI.cpp + test_Main.cpp + test_SimpleBrightnessStrategy.cpp + test_SimpleColorHueStrategy.cpp + test_SimpleColorTemperatureStrategy.cpp + test_UPnP.cpp ) -set(HuePlusPlus_INCLUDE_DIR "${hueplusplus_SOURCE_DIR}/include") +set(HuePlusPlus_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/include") # test executable -add_executable(test_HuePlusPlus ${TEST_SOURCES} ${hueplusplus_SOURCES}) +add_executable(test_HuePlusPlus ${TEST_SOURCES}) if(DO_CLANG_TIDY) set_target_properties(test_HuePlusPlus PROPERTIES CXX_CLANG_TIDY ${DO_CLANG_TIDY}) endif() target_compile_features(test_HuePlusPlus PUBLIC cxx_std_14) set_property(TARGET test_HuePlusPlus PROPERTY CXX_EXTENSIONS OFF) -target_link_libraries(test_HuePlusPlus gtest gmock) +target_link_libraries(test_HuePlusPlus PUBLIC hueplusplusstatic) +target_link_libraries(test_HuePlusPlus PUBLIC gtest gmock) target_include_directories(test_HuePlusPlus PUBLIC ${GTest_INCLUDE_DIRS}) -target_include_directories(test_HuePlusPlus PUBLIC ${HuePlusPlus_INCLUDE_DIR}) # add custom target to make it simple to run the tests add_custom_target("unittest" # Run the executable -- libgit2 0.21.4