blob: f7d15beded16993ee2a72c845798c7d86922c597 [file]
enable_language(C CXX)
add_library(lib1 STATIC)
target_sources(lib1 PRIVATE lib1.c)
target_sources(lib1 PUBLIC FILE_SET a TYPE SOURCES FILES lib2.c)
set_property(FILE_SET a TARGET lib1 PROPERTY LANGUAGE CXX)
set_property(FILE_SET a TARGET lib1 PROPERTY COMPILE_DEFINITIONS
LIB1_A EXPECT_CXX "$<$<COMPILE_LANGUAGE:CXX>:EXPECTED_LANGUAGE>")
set_property(FILE_SET a TARGET lib1 PROPERTY COMPILE_OPTIONS -DOPT_LIB1_A)
set_property(FILE_SET a TARGET lib1 PROPERTY INCLUDE_DIRECTORIES "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/subdir1>"
"$<INSTALL_INTERFACE:include/subdir1>")
set_property(FILE_SET a TARGET lib1 PROPERTY INTERFACE_COMPILE_DEFINITIONS
INTERFACE_LIB1_A EXPECT_CXX "$<$<COMPILE_LANGUAGE:CXX>:EXPECTED_LANGUAGE>")
set_property(FILE_SET a TARGET lib1 PROPERTY INTERFACE_COMPILE_OPTIONS -DOPT_INTERFACE_LIB1_A)
set_property(FILE_SET a TARGET lib1 PROPERTY INTERFACE_INCLUDE_DIRECTORIES "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/subdir2>"
"$<INSTALL_INTERFACE:include/subdir2>")
target_sources(lib1 PUBLIC FILE_SET SOURCES FILES lib5.c)
set_property(FILE_SET SOURCES TARGET lib1 PROPERTY INTERFACE_COMPILE_DEFINITIONS INTERFACE_LIB1_SRCS)
set_property(FILE_SET SOURCES TARGET lib1 PROPERTY INTERFACE_COMPILE_OPTIONS -DOPT_INTERFACE_LIB1_SRCS)
set_property(FILE_SET SOURCES TARGET lib1 PROPERTY INTERFACE_INCLUDE_DIRECTORIES "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/srcs>"
"$<INSTALL_INTERFACE:include/srcs>")
add_executable(main main.c)
target_link_libraries(main PRIVATE lib1)
target_compile_definitions(main PRIVATE CONSUMER)
if(CMAKE_GENERATOR MATCHES "Xcode")
install(TARGETS lib1 EXPORT export FILE_SET a DESTINATION sources
FILE_SET SOURCES DESTINATION sources/srcs)
else()
install(TARGETS lib1 EXPORT export FILE_SET a DESTINATION sources
FILE_SET SOURCES DESTINATION sources/$<IF:$<CONFIG:Debug>,debug,release>)
endif()
install(FILES subdir1/h1.h subdir1/h3.h DESTINATION include/subdir1)
install(FILES subdir2/h2.h subdir2/h3.h DESTINATION include/subdir2)
install(EXPORT export FILE export.cmake NAMESPACE install:: DESTINATION lib/cmake)
export(EXPORT export FILE export.cmake NAMESPACE export::)