From 52fb9ee191afbf87a329df8da31a5cea255740af Mon Sep 17 00:00:00 2001 From: kamiccolo Date: Thu, 20 Jul 2023 12:58:43 +0300 Subject: [PATCH] Revert "Isolate samples, unittests, coverage and overall build to PROJECT_BINARY_DIR" This reverts commit 057ddfcf1755380583c6eb4ac97767a652fbfe9d. --- CMakeLists.txt | 2 +- cmake/exiv2_uninstall.cmake | 8 ++++---- cmake/findDependencies.cmake | 14 +++++++------- cmake/gcovr.cmake | 6 +++--- cmake/generateConfigFile.cmake | 2 +- cmake/mainSetup.cmake | 10 +++++----- cmake/printSummary.cmake | 2 +- samples/CMakeLists.txt | 14 +++++++------- src/CMakeLists.txt | 8 ++++---- unitTests/CMakeLists.txt | 3 ++- 10 files changed, 35 insertions(+), 34 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b4911bef..aed47f2b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -92,7 +92,7 @@ if (EXIV2_BUILD_DOC) generate_documentation("${PROJECT_SOURCE_DIR}/cmake/Doxyfile.in") endif() -include_directories(${PROJECT_BINARY_DIR}) # Make the exv_conf.h file visible for the full project +include_directories(${CMAKE_BINARY_DIR}) # Make the exv_conf.h file visible for the full project if( EXIV2_ENABLE_XMP ) add_subdirectory( xmpsdk ) diff --git a/cmake/exiv2_uninstall.cmake b/cmake/exiv2_uninstall.cmake index c0f54a2c..30b0c276 100644 --- a/cmake/exiv2_uninstall.cmake +++ b/cmake/exiv2_uninstall.cmake @@ -1,8 +1,8 @@ -IF(NOT EXISTS "${PROJECT_BINARY_DIR}/install_manifest.txt") - MESSAGE(FATAL_ERROR "Cannot find install manifest: ${PROJECT_BINARY_DIR}/install_manifest.txt") -ENDIF(NOT EXISTS "${PROJECT_BINARY_DIR}/install_manifest.txt") +IF(NOT EXISTS "${CMAKE_BINARY_DIR}/install_manifest.txt") + MESSAGE(FATAL_ERROR "Cannot find install manifest: ${CMAKE_BINARY_DIR}/install_manifest.txt") +ENDIF(NOT EXISTS "${CMAKE_BINARY_DIR}/install_manifest.txt") -FILE(READ "${PROJECT_BINARY_DIR}/install_manifest.txt" files) +FILE(READ "${CMAKE_BINARY_DIR}/install_manifest.txt" files) STRING(REGEX REPLACE "\n" ";" files "${files}") FOREACH(file ${files}) MESSAGE(STATUS "Uninstalling: ${file}") diff --git a/cmake/findDependencies.cmake b/cmake/findDependencies.cmake index be0931ef..5ee481d1 100644 --- a/cmake/findDependencies.cmake +++ b/cmake/findDependencies.cmake @@ -1,13 +1,13 @@ if (CONAN_AUTO_INSTALL) # Download automatically the cmake-conan integration file - if(NOT EXISTS "${PROJECT_BINARY_DIR}/conan.cmake") + if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake") message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan") file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/master/conan.cmake" - "${PROJECT_BINARY_DIR}/conan.cmake" + "${CMAKE_BINARY_DIR}/conan.cmake" TLS_VERIFY ON) endif() - include(${PROJECT_BINARY_DIR}/conan.cmake) + include(${CMAKE_BINARY_DIR}/conan.cmake) conan_cmake_autodetect(settings) conan_cmake_install(PATH_OR_REFERENCE .. @@ -19,13 +19,13 @@ endif() if (APPLE) # On Apple, we use the conan cmake_paths generator - if (EXISTS ${PROJECT_BINARY_DIR}/conan_paths.cmake) - include(${PROJECT_BINARY_DIR}/conan_paths.cmake) + if (EXISTS ${CMAKE_BINARY_DIR}/conan_paths.cmake) + include(${CMAKE_BINARY_DIR}/conan_paths.cmake) endif() else() # Otherwise, we rely on the conan cmake_find_package generator - list(APPEND CMAKE_MODULE_PATH ${PROJECT_BINARY_DIR}) - list(APPEND CMAKE_PREFIX_PATH ${PROJECT_BINARY_DIR}) + list(APPEND CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR}) + list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}) endif() list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/") diff --git a/cmake/gcovr.cmake b/cmake/gcovr.cmake index a904eab4..75d16e8a 100644 --- a/cmake/gcovr.cmake +++ b/cmake/gcovr.cmake @@ -8,15 +8,15 @@ if(BUILD_WITH_COVERAGE) find_program (GCOVR gcovr) if(GCOVR) - file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/coverage_output ) + file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/coverage_output ) add_custom_command(OUTPUT _run_gcovr_parser POST_BUILD - COMMAND ${GCOVR} --root ${PROJECT_SOURCE_DIR} --object-dir=${PROJECT_BINARY_DIR} --html --html-details -o coverage_output/coverage.html + COMMAND ${GCOVR} --root ${CMAKE_SOURCE_DIR} --object-dir=${CMAKE_BINARY_DIR} --html --html-details -o coverage_output/coverage.html --exclude-directories xmpsdk --exclude-directories unitTests --exclude-directories samples --exclude '.*xmpsdk.*' --exclude '.*unitTests.*' --exclude '.*samples.*' --exclude-unreachable-branches --exclude-throw-branches - WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} ) add_custom_target (coverage DEPENDS _run_gcovr_parser) endif() diff --git a/cmake/generateConfigFile.cmake b/cmake/generateConfigFile.cmake index f940fb7e..49c9a10f 100644 --- a/cmake/generateConfigFile.cmake +++ b/cmake/generateConfigFile.cmake @@ -37,4 +37,4 @@ int main() { set(EXV_ENABLE_NLS ${EXIV2_ENABLE_NLS}) set(EXV_ENABLE_VIDEO ${EXIV2_ENABLE_VIDEO}) -configure_file(cmake/config.h.cmake ${PROJECT_BINARY_DIR}/exv_conf.h @ONLY) +configure_file(cmake/config.h.cmake ${CMAKE_BINARY_DIR}/exv_conf.h @ONLY) diff --git a/cmake/mainSetup.cmake b/cmake/mainSetup.cmake index 9e01423a..1ea9debe 100644 --- a/cmake/mainSetup.cmake +++ b/cmake/mainSetup.cmake @@ -10,10 +10,10 @@ include(CTest) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) @@ -33,6 +33,6 @@ endif() # Prevent conflicts when exiv2 is consumed in multiple-subdirectory projects. if (NOT TARGET uninstall) - configure_file(cmake/exiv2_uninstall.cmake ${PROJECT_BINARY_DIR}/cmake_uninstall.cmake COPYONLY) - add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${PROJECT_BINARY_DIR}/cmake_uninstall.cmake") + configure_file(cmake/exiv2_uninstall.cmake ${CMAKE_BINARY_DIR}/cmake_uninstall.cmake COPYONLY) + add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake") endif() diff --git a/cmake/printSummary.cmake b/cmake/printSummary.cmake index 747ac4dc..854323ba 100644 --- a/cmake/printSummary.cmake +++ b/cmake/printSummary.cmake @@ -14,7 +14,7 @@ function(printList items) endforeach() endfunction() -get_property(COMPILER_OPTIONS DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY COMPILE_OPTIONS) +get_property(COMPILER_OPTIONS DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY COMPILE_OPTIONS) message( STATUS "Install prefix: ${CMAKE_INSTALL_PREFIX}") message( STATUS "------------------------------------------------------------------" ) diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index 2fa061d7..27266f28 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -39,7 +39,7 @@ foreach(entry ${SAMPLES}) set_target_properties(${target} PROPERTIES COMPILE_FLAGS ${EXTRA_COMPILE_FLAGS}) list(APPEND APPLICATIONS ${target}) - target_include_directories(${target} PRIVATE ${PROJECT_SOURCE_DIR}/src) # To find unused.h + target_include_directories(${target} PRIVATE ${CMAKE_SOURCE_DIR}/src) # To find unused.h if ( NOT ${target} MATCHES ".*test.*") # don't install tests install( TARGETS ${target} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) endif() @@ -54,20 +54,20 @@ endif() add_executable( getopt-test getopt-test.cpp ../app/getopt.cpp) list(APPEND APPLICATIONS getopt-test) target_include_directories(getopt-test PRIVATE - ${PROJECT_SOURCE_DIR}/app + ${CMAKE_SOURCE_DIR}/app ) # To find getopt.hpp add_executable( metacopy metacopy.cpp metacopy.hpp ../app/getopt.cpp) list(APPEND APPLICATIONS metacopy) target_include_directories(metacopy PRIVATE - ${PROJECT_SOURCE_DIR}/app + ${CMAKE_SOURCE_DIR}/app ) # To find getopt.hpp add_executable( path-test path-test.cpp ../app/getopt.cpp) list(APPEND APPLICATIONS path-test) set_target_properties( path-test PROPERTIES OUTPUT_NAME path-test ) target_include_directories(path-test PRIVATE - ${PROJECT_SOURCE_DIR}/app + ${CMAKE_SOURCE_DIR}/app ) # To find getopt.hpp install( TARGETS metacopy RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) @@ -85,10 +85,10 @@ if( EXPAT_FOUND ) exiv2-xmp ${EXPAT_LIBRARIES} ) - target_include_directories(geotag PRIVATE ${PROJECT_BINARY_DIR}) # exv_conf.h - target_include_directories(geotag PRIVATE ${PROJECT_SOURCE_DIR}/include) # + target_include_directories(geotag PRIVATE ${CMAKE_BINARY_DIR}) # exv_conf.h + target_include_directories(geotag PRIVATE ${CMAKE_SOURCE_DIR}/include) # target_include_directories(geotag PRIVATE ${EXPAT_INCLUDE_DIR}) - target_include_directories(geotag PRIVATE ${PROJECT_SOURCE_DIR}/src) # To find unused.h + target_include_directories(geotag PRIVATE ${CMAKE_SOURCE_DIR}/src) # To find unused.h if (WIN32) target_compile_definitions(geotag PRIVATE XML_STATIC) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6b5cfcb1..1abc7eac 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -128,7 +128,7 @@ add_library( exiv2lib generate_export_header(exiv2lib EXPORT_MACRO_NAME EXIV2API - EXPORT_FILE_NAME ${PROJECT_BINARY_DIR}/exiv2lib_export.h + EXPORT_FILE_NAME ${CMAKE_BINARY_DIR}/exiv2lib_export.h STATIC_DEFINE exiv2lib_STATIC ) @@ -291,11 +291,11 @@ install(TARGETS exiv2lib EXPORT exiv2Config install(FILES ${PUBLIC_HEADERS} - ${PROJECT_BINARY_DIR}/exv_conf.h - ${PROJECT_BINARY_DIR}/exiv2lib_export.h + ${CMAKE_BINARY_DIR}/exv_conf.h + ${CMAKE_BINARY_DIR}/exiv2lib_export.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/exiv2) install(EXPORT exiv2Config DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/exiv2") -install(FILES ${PROJECT_BINARY_DIR}/exiv2ConfigVersion.cmake DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/exiv2") +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/exiv2ConfigVersion.cmake DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/exiv2") diff --git a/unitTests/CMakeLists.txt b/unitTests/CMakeLists.txt index 51040c0e..57b59e85 100644 --- a/unitTests/CMakeLists.txt +++ b/unitTests/CMakeLists.txt @@ -62,7 +62,8 @@ if( EXIV2_ENABLE_PNG ) endif() target_include_directories(unit_tests - PRIVATE ${PROJECT_SOURCE_DIR}/src + PRIVATE + ${CMAKE_SOURCE_DIR}/src ) set_target_properties(unit_tests PROPERTIES