gpt4 book ai didi

c++ - 使用 CMake 获取预处理器定义值

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:43:27 28 4
gpt4 key购买 nike

使用 CMake 获取 C 预处理器定义的值是否有一种不完全 hacky 的方法?例如,我可能想做这样的事情来获得准确的 MSVC 版本。

if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
get_preprocessor_value("_MSC_FULL_VER" msvc_version)
if (msvc_version LESS 190023918)
message(FATAL_ERROR "Visual C++ 2015 Update 2 or later is required due to a bug in std::atomic.")
endif ()
target_compile_definitions(mytarget PRIVATE "_ENABLE_ATOMIC_ALIGNMENT_FIX")
endif ()

我编写了 get_preprocessor_value()。是否有一个功能可以做到这一点,或者有一种简单的方法可以做到这一点。显然,我可以让 CMake 编译一个简单的程序来打印它,并捕获标准输出,但我想知道是否有一个内置函数可以为我做这件事。

最佳答案

没有内置的 CMake 函数可以做到这一点,CMake 也没有附带 standard module做那样的事情。

对于编译器版本的特殊情况,CMake 有变量 CMAKE_<LANG>_COMPILER_VERSION (例如 C++ 的 CMAKE_CXX_COMPILER_VERSION)。

如果该变量没有为您提供足够的信息,您最好的选择是使用 try_run() 正如您在问题中提到的那样,编译并打印宏的值。我一点也不觉得这有问题,我想说这实际上是在 CMake 中做类似事情的一种非常惯用的方式。

关于c++ - 使用 CMake 获取预处理器定义值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44410526/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com