此问题已在此处有答案:
different INTERFACE compiler options for different languages(2个答案)
3天前关闭。
截至3天前,社区正在审查是否重新讨论此问题。
CMake提供add_compile_definitions()
,用于为当前目录下的所有目标添加编译器定义;还有target_compile_definitions()
用于单独的目标。但是-在我看来,一般情况下应该是特定于语言的,而不是绝对所有的目标。为什么会,比如说,C和Rust使用相同的定义?
那么,除了一次定义一个目标之外,有没有其他方法可以为单一语言的所有目标添加定义?
2条答案
按热度按时间hgb9j2n61#
假设你的语言是MYLANG,并且定义在命令行上使用
-DFOO=bar
传递给编译器。这应该可以完成你所要求的:……但它相当丑陋。
fwzugrvs2#
尝试在顶级CMakeLists.txt文件的顶部使用
add_definitions
(或者您希望将其应用到的任何变量范围),并使用$<COMPILE_LANGUAGE:languages>
generator expression(需要cmake_minimum_required(VERSION 3.3)
)。如果
cmake_minimum_required
小于3.3,我想可以追加到CMAKE_<LANG>_FLAGS
.ex。