enable_language(C) function(check_components value) get_cmake_property(comp COMPONENTS) if(NOT comp STREQUAL value) message(FATAL_ERROR "Expected value of COMPONENTS:\n ${value}\nActual value of COMPONENTS:\n ${comp}") endif() endfunction() if(CMAKE_SYSTEM_NAME STREQUAL "Windows") add_library(tgt MODULE obj1.c) else() add_executable(tgt main.c) endif() install(TARGETS tgt RUNTIME_DEPENDENCIES RUNTIME DESTINATION bin COMPONENT bin1 LIBRARY DESTINATION lib COMPONENT lib1 FRAMEWORK DESTINATION fw COMPONENT fw1 ) if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") check_components("bin1;fw1;lib1") else() check_components("bin1;lib1") endif() install(RUNTIME_DEPENDENCY_SET deps RUNTIME DESTINATION bin COMPONENT bin2 LIBRARY DESTINATION lib COMPONENT lib2 FRAMEWORK DESTINATION fw COMPONENT fw2 ) if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") check_components("bin1;fw1;fw2;lib1;lib2") elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") check_components("bin1;bin2;lib1") elseif() check_components("bin1;lib1;lib2") endif()