myx/lib/TargetSetup.cmake

29 lines
1.1 KiB
CMake
Raw Normal View History

2022-09-29 14:54:13 +00:00
include_guard(GLOBAL)
function(myx_target_setup NAME)
set(options)
set(oneValueArgs PCH)
set(multiValueArgs COMPILE_DEFINITIONS FIND_PACKAGES LINK_LIBRARIES SOURCES)
cmake_parse_arguments(arg "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
foreach(iter ${arg_FIND_PACKAGES})
find_package(${iter} CONFIG REQUIRED)
target_include_directories(${NAME} PRIVATE ${${iter}_INCLUDE_DIRS})
target_compile_definitions(${NAME} PRIVATE ${${iter}_COMPILE_DEFINITIONS})
endforeach()
target_compile_definitions(${NAME} PRIVATE ${arg_COMPILE_DEFINITIONS})
if(arg_PCH)
if(${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.16)
target_precompile_headers(${NAME} PRIVATE ${PROJECT_SOURCE_DIR}/${arg_PCH})
else()
target_compile_options(${NAME} PRIVATE -include ${PROJECT_SOURCE_DIR}/${arg_PCH})
endif()
target_sources(${NAME} PRIVATE ${PROJECT_SOURCE_DIR}/${arg_PCH})
endif()
target_sources(${NAME} PRIVATE ${arg_SOURCES})
target_link_libraries(${NAME} PRIVATE ${arg_LINK_LIBRARIES})
target_compile_definitions(${NAME} PRIVATE ${arg_COMPILE_DEFINITIONS})
endfunction()