diff --git a/CMakeLists.txt b/CMakeLists.txt index d55fdc51..192ecb77 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,6 +11,7 @@ set(CMAKE_CXX_STANDARD 11) option(RC_ENABLE_TESTS "Build RapidCheck tests" OFF) option(RC_ENABLE_EXAMPLES "Build RapidCheck examples" OFF) option(RC_ENABLE_RTTI "Build RapidCheck with RTTI" ON) +option(RC_ENABLE_INSTALL "Install rapidcheck" ON) if(MSVC) # /bigobj - some object files become very large so we need this @@ -86,13 +87,16 @@ target_include_directories(rapidcheck PUBLIC $ # /include ) -include(GNUInstallDirs) -install(TARGETS rapidcheck EXPORT rapidcheckConfig - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} # This is for Windows - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} -) -install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +if(RC_ENABLE_INSTALL) + include(GNUInstallDirs) + install(TARGETS rapidcheck EXPORT rapidcheckConfig + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} # This is for Windows + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT ${PROJECT_NAME} + ) + install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT ${PROJECT_NAME}) +endif() # On Windows under MinGW, random_device provides no entropy, # so it will always return the same value. @@ -120,8 +124,10 @@ endif() add_subdirectory(extras) # Install the export file specifying all the targets for RapidCheck -install(EXPORT rapidcheckConfig DESTINATION share/rapidcheck/cmake) -export(EXPORT rapidcheckConfig FILE rapidcheckConfig.cmake) +if(RC_ENABLE_INSTALL) + install(EXPORT rapidcheckConfig DESTINATION share/rapidcheck/cmake COMPONENT ${PROJECT_NAME}) + export(EXPORT rapidcheckConfig FILE rapidcheckConfig.cmake) +endif() set(PKG_CONFIG_REQUIRES) set(PKG_CONFIG_DESCRIPTION_SUMMARY "C++ framework for property based testing inspired by QuickCheck and other similar frameworks") @@ -136,6 +142,9 @@ configure_file( "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" ) -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig - ) +if(RC_ENABLE_INSTALL) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + COMPONENT ${PROJECT_NAME} + ) +endif() diff --git a/extras/boost/CMakeLists.txt b/extras/boost/CMakeLists.txt index 87ce2dfc..ef0423ce 100644 --- a/extras/boost/CMakeLists.txt +++ b/extras/boost/CMakeLists.txt @@ -9,8 +9,10 @@ target_include_directories(rapidcheck_boost INTERFACE # An INTERFACE library does not need to install anything but its headers # and information on its targets. -install(TARGETS rapidcheck_boost EXPORT rapidcheckConfig) -install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +if(RC_ENABLE_INSTALL) + install(TARGETS rapidcheck_boost EXPORT rapidcheckConfig COMPONENT ${PROJECT_NAME}) + install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT ${PROJECT_NAME}) +endif() if (RC_ENABLE_TESTS) add_subdirectory(test) @@ -29,6 +31,9 @@ configure_file( "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" ) -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig - ) +if(RC_ENABLE_INSTALL) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + COMPONENT ${PROJECT_NAME} + ) +endif() diff --git a/extras/boost_test/CMakeLists.txt b/extras/boost_test/CMakeLists.txt index b17a5e4d..b3e5a51a 100644 --- a/extras/boost_test/CMakeLists.txt +++ b/extras/boost_test/CMakeLists.txt @@ -9,8 +9,10 @@ target_include_directories(rapidcheck_boost_test INTERFACE # An INTERFACE library does not need to install anything but its headers # and information on its targets. -install(TARGETS rapidcheck_boost_test EXPORT rapidcheckConfig) -install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +if(RC_ENABLE_INSTALL) + install(TARGETS rapidcheck_boost_test EXPORT rapidcheckConfig COMPONENT ${PROJECT_NAME}) + install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT ${PROJECT_NAME}) +endif() set(PKG_CONFIG_REQUIRES "rapidcheck") set(PKG_CONFIG_DESCRIPTION_SUMMARY "boost_test headers for rapidcheck") @@ -27,4 +29,5 @@ configure_file( install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + COMPONENT ${PROJECT_NAME} ) diff --git a/extras/catch/CMakeLists.txt b/extras/catch/CMakeLists.txt index 35fb3010..31a3ef99 100644 --- a/extras/catch/CMakeLists.txt +++ b/extras/catch/CMakeLists.txt @@ -9,8 +9,10 @@ target_include_directories(rapidcheck_catch INTERFACE # An INTERFACE library does not need to install anything but its headers # and information on its targets. -install(TARGETS rapidcheck_catch EXPORT rapidcheckConfig) -install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +if(RC_ENABLE_INSTALL) + install(TARGETS rapidcheck_catch EXPORT rapidcheckConfig COMPONENT ${PROJECT_NAME}) + install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT ${PROJECT_NAME}) +endif() set(PKG_CONFIG_REQUIRES "rapidcheck") set(PKG_CONFIG_DESCRIPTION_SUMMARY "catch headers for rapidcheck") @@ -25,6 +27,9 @@ configure_file( "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" ) -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig - ) +if(RC_ENABLE_INSTALL) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + COMPONENT ${PROJECT_NAME} + ) +endif() diff --git a/extras/doctest/CMakeLists.txt b/extras/doctest/CMakeLists.txt index d9170c76..5d3832fd 100644 --- a/extras/doctest/CMakeLists.txt +++ b/extras/doctest/CMakeLists.txt @@ -9,8 +9,10 @@ target_include_directories(rapidcheck_doctest INTERFACE # An INTERFACE library does not need to install anything but its headers # and information on its targets. -install(TARGETS rapidcheck_doctest EXPORT rapidcheckConfig) -install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +if(RC_ENABLE_INSTALL) + install(TARGETS rapidcheck_doctest EXPORT rapidcheckConfig COMPONENT ${PROJECT_NAME}) + install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT ${PROJECT_NAME}) +endif() set(PKG_CONFIG_REQUIRES "rapidcheck") set(PKG_CONFIG_DESCRIPTION_SUMMARY "doctest headers for rapidcheck") @@ -25,6 +27,9 @@ configure_file( "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" ) -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig - ) +if(RC_ENABLE_INSTALL) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + COMPONENT ${PROJECT_NAME} + ) +endif() diff --git a/extras/gmock/CMakeLists.txt b/extras/gmock/CMakeLists.txt index fd709b2d..9ca96aa6 100644 --- a/extras/gmock/CMakeLists.txt +++ b/extras/gmock/CMakeLists.txt @@ -9,8 +9,10 @@ target_include_directories(rapidcheck_gmock INTERFACE # An INTERFACE library does not need to install anything but its headers # and information on its targets. -install(TARGETS rapidcheck_gmock EXPORT rapidcheckConfig) -install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +if(RC_ENABLE_INSTALL) + install(TARGETS rapidcheck_gmock EXPORT rapidcheckConfig COMPONENT ${PROJECT_NAME}) + install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT ${PROJECT_NAME}) +endif() if (RC_ENABLE_TESTS) add_subdirectory(test) @@ -29,6 +31,9 @@ configure_file( "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" ) -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig - ) +if(RC_ENABLE_INSTALL) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + COMPONENT ${PROJECT_NAME} + ) +endif() diff --git a/extras/gtest/CMakeLists.txt b/extras/gtest/CMakeLists.txt index ae36648a..79057e51 100644 --- a/extras/gtest/CMakeLists.txt +++ b/extras/gtest/CMakeLists.txt @@ -9,8 +9,10 @@ target_include_directories(rapidcheck_gtest INTERFACE # An INTERFACE library does not need to install anything but its headers # and information on its targets. -install(TARGETS rapidcheck_gtest EXPORT rapidcheckConfig) -install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +if(RC_ENABLE_INSTALL) + install(TARGETS rapidcheck_gtest EXPORT rapidcheckConfig COMPONENT ${PROJECT_NAME}) + install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT ${PROJECT_NAME}) +endif() set(PKG_CONFIG_REQUIRES "rapidcheck") set(PKG_CONFIG_DESCRIPTION_SUMMARY "gtest headers for rapidcheck") @@ -25,6 +27,9 @@ configure_file( "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" ) -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig - ) +if(RC_ENABLE_INSTALL) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + COMPONENT ${PROJECT_NAME} + ) +endif()