Use target_compile_definitions for custom defines

Replace `add_definitions` with `target_compile_definitions` for
specified targets. Multiple options are separated using the
`separate_arguments` function, which converts any string using
space-separated arguments into a semicolon-separated list.
This commit is contained in:
Björn Blissing 2021-06-19 11:22:31 +02:00
parent 0f1e75a902
commit fc7928a4b7

View File

@ -24,7 +24,8 @@ cmake_dependent_option(PUGIXML_BUILD_TESTS
"BUILD_TESTING;CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR" OFF) "BUILD_TESTING;CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR" OFF)
# Custom build defines # Custom build defines
set(PUGIXML_BUILD_DEFINES CACHE STRING "Build defines") set(PUGIXML_BUILD_DEFINES CACHE STRING "Build defines for custom options")
separate_arguments(PUGIXML_BUILD_DEFINES)
option(PUGIXML_BUILD_SHARED_AND_STATIC_LIBS "Build both shared and static libraries" OFF) option(PUGIXML_BUILD_SHARED_AND_STATIC_LIBS "Build both shared and static libraries" OFF)
@ -47,12 +48,6 @@ if (NOT DEFINED CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD 11)
endif() endif()
if (DEFINED PUGIXML_BUILD_DEFINES)
foreach(DEFINE ${PUGIXML_BUILD_DEFINES})
add_definitions("-D" ${DEFINE})
endforeach()
endif()
if (PUGIXML_USE_POSTFIX) if (PUGIXML_USE_POSTFIX)
set(CMAKE_RELWITHDEBINFO_POSTFIX _r) set(CMAKE_RELWITHDEBINFO_POSTFIX _r)
set(CMAKE_MINSIZEREL_POSTFIX _m) set(CMAKE_MINSIZEREL_POSTFIX _m)
@ -90,6 +85,8 @@ if (PUGIXML_BUILD_SHARED_LIBS OR PUGIXML_BUILD_SHARED_AND_STATIC_LIBS)
PUBLIC PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>) $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>)
target_compile_definitions(pugixml-shared target_compile_definitions(pugixml-shared
PUBLIC
${PUGIXML_BUILD_DEFINES}
PRIVATE PRIVATE
$<$<CXX_COMPILER_ID:MSVC>:PUGIXML_API=__declspec\(dllexport\)>) $<$<CXX_COMPILER_ID:MSVC>:PUGIXML_API=__declspec\(dllexport\)>)
target_compile_options(pugixml-shared target_compile_options(pugixml-shared
@ -110,6 +107,9 @@ if (NOT PUGIXML_BUILD_SHARED_LIBS OR PUGIXML_BUILD_SHARED_AND_STATIC_LIBS)
target_include_directories(pugixml-static target_include_directories(pugixml-static
PUBLIC PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>) $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>)
target_compile_definitions(pugixml-static
PUBLIC
${PUGIXML_BUILD_DEFINES})
target_compile_options(pugixml-static target_compile_options(pugixml-static
PRIVATE PRIVATE
${msvc-rt-mtd-shared} ${msvc-rt-mtd-shared}