29 lines
1.1 KiB
CMake
29 lines
1.1 KiB
CMake
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()
|