From e95fc0b8fecf30adcd049f9a4b397694b21d05b9 Mon Sep 17 00:00:00 2001 From: Josh King Date: Wed, 23 Apr 2014 14:30:22 -0400 Subject: [PATCH 1/4] Modify CMake configuration for unit tests for better CTest integration, running of GTest as part of default build. --- tests/CMakeLists.txt | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index faa43e5..2409ca5 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -15,18 +15,20 @@ ExternalProject_Add(googletest # Specify include dir ExternalProject_Get_Property(googletest source_dir) -set(GTEST_INCLUDE_DIRS ${source_dir}/include) +set(GTEST_INCLUDE_DIR ${source_dir}/include) # Specify MainTest's link libraries ExternalProject_Get_Property(googletest binary_dir) -set(GTEST_LIBS_DIR ${binary_dir}) +set(GTEST_LIBRARY ${binary_dir}/libgtest.a) +set(GTEST_MAIN_LIBRARY ${binary_dir}/libgtest_main.a) #------------------- # Test #------------------- enable_testing() +include(FindGTest QUIETLY) set(PROJECT_TEST_NAME ${PROJECT_NAME_STR}_test) -include_directories(${GTEST_INCLUDE_DIRS} ${COMMON_INCLUDES}) +include_directories(${GTEST_INCLUDE_DIR} ${COMMON_INCLUDES}) file(GLOB TEST_SRC_FILES ${PROJECT_SOURCE_DIR}/*.cpp) add_executable(${PROJECT_TEST_NAME} ${TEST_SRC_FILES}) @@ -34,11 +36,13 @@ add_dependencies(${PROJECT_TEST_NAME} googletest) target_link_libraries(${PROJECT_TEST_NAME} commotion) target_link_libraries(${PROJECT_TEST_NAME} - ${GTEST_LIBS_DIR}/libgtest.a - ${GTEST_LIBS_DIR}/libgtest_main.a) + ${GTEST_LIBRARY} + ${GTEST_MAIN_LIBRARY}) target_link_libraries(${PROJECT_TEST_NAME} pthread) -add_test(test1 ${PROJECT_TEST_NAME}) +GTEST_ADD_TESTS(${PROJECT_TEST_NAME} "" ${TEST_SRC_FILES}) + +add_custom_command(TARGET ${PROJECT_TEST_NAME} POST_BUILD COMMAND ${PROJECT_TEST_NAME}) #get_cmake_property(_variableNames VARIABLES) #foreach (_variableName ${_variableNames}) From 6a2f86634708351bda334c430ea9fbfa26d7dcdf Mon Sep 17 00:00:00 2001 From: Josh King Date: Wed, 23 Apr 2014 15:38:30 -0400 Subject: [PATCH 2/4] Removed C-specific option from unit tests build, in order to eliminate annoying build warning. --- tests/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 2409ca5..80ac500 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,4 +1,5 @@ cmake_minimum_required(VERSION 2.8.8) +REMOVE_DEFINITIONS("--std=gnu99") project(gtest_builder C CXX) include(ExternalProject) From fa03fc32beab4ec213d7d6f9bdcd89ecc8fe052c Mon Sep 17 00:00:00 2001 From: Josh King Date: Wed, 23 Apr 2014 15:46:33 -0400 Subject: [PATCH 3/4] Add CMake uninstall target and fix configuration file paths. --- CMakeLists.txt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3a4da50..d0d5bba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -59,5 +59,15 @@ if(NOT OPENWRT) endif(DOXYGEN_FOUND) endif() -INSTALL(FILES files/commotiond.conf DESTINATION etc/commotion) -INSTALL(DIRECTORY files/profiles.d DESTINATION etc/commotion) +INSTALL(FILES files/commotiond.conf DESTINATION /etc/commotion) +INSTALL(DIRECTORY files/profiles.d DESTINATION /etc/commotion) + +# uninstall target +configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" + IMMEDIATE @ONLY) + +add_custom_target(uninstall + COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) + From 0a4df1b193b8582a90c734457c5f309ca2d2eb9e Mon Sep 17 00:00:00 2001 From: Josh King Date: Wed, 23 Apr 2014 15:53:14 -0400 Subject: [PATCH 4/4] Fix capitalization of CMake builtins in order to fit with best practices. --- CMakeLists.txt | 22 +++++++++++----------- tests/CMakeLists.txt | 34 +++++++++++++++++----------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d0d5bba..c5bbd22 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ -cmake_minimum_required(VERSION 2.6) +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) -set(PROJECT_NAME_STR commotion) +SET(PROJECT_NAME_STR commotion) PROJECT(${PROJECT_NAME_STR}) SET(NO_OPTIMIZE ON CACHE BOOL "Disable optimization flags.") SET(DEBUG ON CACHE BOOL "Turn on debugging.") @@ -47,27 +47,27 @@ IF(PLUGINS) ADD_SUBDIRECTORY(plugins) ENDIF() -if(NOT OPENWRT) - find_package(Doxygen) - if(DOXYGEN_FOUND) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doxygen/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) - add_custom_target(doc ALL +IF(NOT OPENWRT) + FIND_PACKAGE(Doxygen) + IF(DOXYGEN_FOUND) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/doxygen/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) + ADD_CUSTOM_TARGET(doc ALL ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Generating API documentation with Doxygen" VERBATIM ) - endif(DOXYGEN_FOUND) -endif() + ENDIF(DOXYGEN_FOUND) +ENDIF() INSTALL(FILES files/commotiond.conf DESTINATION /etc/commotion) INSTALL(DIRECTORY files/profiles.d DESTINATION /etc/commotion) # uninstall target -configure_file( +CONFIGURE_FILE( "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) -add_custom_target(uninstall +ADD_CUSTOM_TARGET(uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 80ac500..31100d1 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,7 +1,7 @@ -cmake_minimum_required(VERSION 2.8.8) +CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8) REMOVE_DEFINITIONS("--std=gnu99") -project(gtest_builder C CXX) -include(ExternalProject) +PROJECT(gtest_builder C CXX) +INCLUDE(ExternalProject) ExternalProject_Add(googletest SVN_REPOSITORY http://googletest.googlecode.com/svn/trunk @@ -16,34 +16,34 @@ ExternalProject_Add(googletest # Specify include dir ExternalProject_Get_Property(googletest source_dir) -set(GTEST_INCLUDE_DIR ${source_dir}/include) +SET(GTEST_INCLUDE_DIR ${source_dir}/include) # Specify MainTest's link libraries ExternalProject_Get_Property(googletest binary_dir) -set(GTEST_LIBRARY ${binary_dir}/libgtest.a) -set(GTEST_MAIN_LIBRARY ${binary_dir}/libgtest_main.a) +SET(GTEST_LIBRARY ${binary_dir}/libgtest.a) +SET(GTEST_MAIN_LIBRARY ${binary_dir}/libgtest_main.a) #------------------- # Test #------------------- -enable_testing() -include(FindGTest QUIETLY) -set(PROJECT_TEST_NAME ${PROJECT_NAME_STR}_test) -include_directories(${GTEST_INCLUDE_DIR} ${COMMON_INCLUDES}) +ENABLE_TESTING() +INCLUDE(FindGTest QUIETLY) +SET(PROJECT_TEST_NAME ${PROJECT_NAME_STR}_test) +INCLUDE_DIRECTORIES(${GTEST_INCLUDE_DIR} ${COMMON_INCLUDES}) -file(GLOB TEST_SRC_FILES ${PROJECT_SOURCE_DIR}/*.cpp) -add_executable(${PROJECT_TEST_NAME} ${TEST_SRC_FILES}) -add_dependencies(${PROJECT_TEST_NAME} googletest) +FILE(GLOB TEST_SRC_FILES ${PROJECT_SOURCE_DIR}/*.cpp) +ADD_EXECUTABLE(${PROJECT_TEST_NAME} ${TEST_SRC_FILES}) +ADD_DEPENDENCIES(${PROJECT_TEST_NAME} googletest) -target_link_libraries(${PROJECT_TEST_NAME} commotion) -target_link_libraries(${PROJECT_TEST_NAME} +TARGET_LINK_LIBRARIES(${PROJECT_TEST_NAME} commotion) +TARGET_LINK_LIBRARIES(${PROJECT_TEST_NAME} ${GTEST_LIBRARY} ${GTEST_MAIN_LIBRARY}) -target_link_libraries(${PROJECT_TEST_NAME} pthread) +TARGET_LINK_LIBRARIES(${PROJECT_TEST_NAME} pthread) GTEST_ADD_TESTS(${PROJECT_TEST_NAME} "" ${TEST_SRC_FILES}) -add_custom_command(TARGET ${PROJECT_TEST_NAME} POST_BUILD COMMAND ${PROJECT_TEST_NAME}) +ADD_CUSTOM_COMMAND(TARGET ${PROJECT_TEST_NAME} POST_BUILD COMMAND ${PROJECT_TEST_NAME}) #get_cmake_property(_variableNames VARIABLES) #foreach (_variableName ${_variableNames})