我有需要一些特定的预处理程序定义的项目。没什么不多。我尝试了各种解决方案:

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}")

引用
  • Is Cmake set variable recursive?
  • 关于c++ - 如何清除cmake的所有定义?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47575581/

    10-09 03:33