From d3fe34389a5deea58b7d3b9af11e327fa994f7e8 Mon Sep 17 00:00:00 2001 From: Jeongseok Lee <jslee02@gmail.com> Date: Sun, 5 Apr 2015 04:58:11 -0400 Subject: [PATCH] Enable out-of-source build by generating configs to binary directory --- CMakeLists.txt | 8 +++++--- include/fcl/CMakeLists.txt | 6 ++++-- test/CMakeLists.txt | 9 ++++++--- test/fcl_resources/config.h.in | 2 +- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a74a5c0c..41cfb3e8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -105,6 +105,7 @@ add_definitions(-DBOOST_TEST_DYN_LINK) # FCL's own include dir should be at the front of the include path include_directories(BEFORE "include") +include_directories("${CMAKE_CURRENT_BINARY_DIR}/include") if(PKG_CONFIG_FOUND) pkg_check_modules(CCD ccd) @@ -133,15 +134,16 @@ link_directories(${CCD_LIBRARY_DIRS}) add_subdirectory(include/fcl) add_subdirectory(src) -set(pkg_conf_file "${CMAKE_CURRENT_SOURCE_DIR}/fcl.pc") -configure_file("${pkg_conf_file}.in" "${pkg_conf_file}" @ONLY) +set(pkg_conf_file_in "${CMAKE_CURRENT_SOURCE_DIR}/fcl.pc.in") +set(pkg_conf_file_out "${CMAKE_CURRENT_BINARY_DIR}/fcl.pc") +configure_file("${pkg_conf_file_in}" "${pkg_conf_file_out}" @ONLY) install(DIRECTORY include/ DESTINATION include FILES_MATCHING PATTERN "*.h" PATTERN "*.hxx" PATTERN ".DS_Store" EXCLUDE ) -install(FILES "${pkg_conf_file}" DESTINATION lib/pkgconfig/ COMPONENT pkgconfig) +install(FILES "${pkg_conf_file_out}" DESTINATION lib/pkgconfig/ COMPONENT pkgconfig) enable_testing() diff --git a/include/fcl/CMakeLists.txt b/include/fcl/CMakeLists.txt index 00022861..eeba55a1 100644 --- a/include/fcl/CMakeLists.txt +++ b/include/fcl/CMakeLists.txt @@ -1,2 +1,4 @@ -file(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}" VERSION_DIR) -configure_file("${VERSION_DIR}/config.h.in" "${VERSION_DIR}/config.h") +file(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}" FCL_CONFIG_IN_DIR) +file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}" FCL_CONFIG_OUT_DIR) +configure_file("${FCL_CONFIG_IN_DIR}/config.h.in" "${FCL_CONFIG_OUT_DIR}/config.h") +install(FILES "${FCL_CONFIG_OUT_DIR}/config.h" DESTINATION include/fcl) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index f684fcd6..ed7e36e5 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -10,14 +10,17 @@ macro(add_fcl_test test_name) endmacro(add_fcl_test) # configure location of resources -file(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/fcl_resources" TEST_RESOURCES_DIR) +file(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/fcl_resources" TEST_RESOURCES_SRC_DIR) +file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}/fcl_resources" TEST_RESOURCES_BIN_DIR) if(WIN32) # Correct directory separator for Windows - string(REPLACE "\\" "\\\\" TEST_RESOURCES_DIR ${TEST_RESOURCES_DIR}) + string(REPLACE "\\" "\\\\" TEST_RESOURCES_SRC_DIR ${TEST_RESOURCES_SRC_DIR}) + string(REPLACE "\\" "\\\\" TEST_RESOURCES_BIN_DIR ${TEST_RESOURCES_BIN_DIR}) endif(WIN32) -configure_file("${TEST_RESOURCES_DIR}/config.h.in" "${TEST_RESOURCES_DIR}/config.h") +configure_file("${TEST_RESOURCES_SRC_DIR}/config.h.in" "${TEST_RESOURCES_BIN_DIR}/config.h") include_directories(.) +include_directories("${CMAKE_CURRENT_BINARY_DIR}") add_fcl_test(test_fcl_collision test_fcl_collision.cpp test_fcl_utility.cpp) add_fcl_test(test_fcl_distance test_fcl_distance.cpp test_fcl_utility.cpp) diff --git a/test/fcl_resources/config.h.in b/test/fcl_resources/config.h.in index 1f8e8cf6..8486bd25 100644 --- a/test/fcl_resources/config.h.in +++ b/test/fcl_resources/config.h.in @@ -37,5 +37,5 @@ #ifndef FCL_TEST_RESOURCES_CONFIG_ #define FCL_TEST_RESOURCES_CONFIG_ -#define TEST_RESOURCES_DIR "@TEST_RESOURCES_DIR@" +#define TEST_RESOURCES_DIR "@TEST_RESOURCES_SRC_DIR@" #endif -- GitLab