include(cmake/generated.cmake) file(GLOB_RECURSE ARTI_LIB_SOURCES "src/**.cpp") file(GLOB_RECURSE ARTI_LIB_HEADERS "include/**.hpp") file(GLOB_RECURSE ARTI_LIB_GEN_HEADERS "${CMAKE_CURRENT_BINARY_DIR}/include/**.hpp") add_library( objs OBJECT ${ARTI_LIB_SOURCES} ) set_target_properties( objs PROPERTIES POSITION_INDEPENDENT_CODE 1 ) target_compile_options( objs PRIVATE -pedantic -Wall -Wextra -Wold-style-cast -Wsign-conversion -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow=5 -Wswitch-default -Wundef -Werror -Wno-unused ) target_include_directories( objs PUBLIC $ $ ) add_library( library SHARED $ ) add_library( artichoke::library ALIAS library ) set_target_properties( library PROPERTIES OUTPUT_NAME "artichoke" ) add_library( library_static STATIC $ ) add_library( artichoke::library_static ALIAS library_static ) set_target_properties( library_static PROPERTIES OUTPUT_NAME "artichoke" ) set(LIB_TARGETS objs library library_static) foreach(TGET IN LISTS LIB_TARGETS) target_sources( ${TGET} INTERFACE FILE_SET HEADERS BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include FILES ${ARTI_LIB_HEADERS} ) target_sources( ${TGET} INTERFACE FILE_SET HEADERS BASE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/include FILES ${ARTI_LIB_GEN_HEADERS} ) endforeach()