我有需要一些特定的预处理程序定义的项目。没什么不多。我尝试了各种解决方案:
set(DEFINES MY_DEFINE)
target_compile_definitions(my_target PRIVATE ${DEFINES})
和
set(DEFINES -DMY_DEFINE)
add_definitions(${DEFINES})
甚至
set(DEFINES MY_DEFINE)
set_property(TARGET my_target PROPERTY CACHE COMPILE_DEFINITIONS ${DEFINES})
每次cmake仍然注入(inject)其他一些定义:
WIN32
_WINDOWS
CMAKE_INTDIR="$(CONFIG)"
我的目标是静态库,而项目生成器是Visual Studio 2015(如果可能会影响任何内容)。如何获取cmake仅设置我的定义?
最佳答案
由于这些是CMake中特定于平台的定义,因此只能使用以下方法针对当前CMakeList.txt
范围(不适用于单个taret)“全局”删除它们:
string(REGEX REPLACE "(-D|/D)[^ ]* " "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
引用
关于c++ - 如何清除cmake的所有定义?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47575581/