CMake以编程方式获取所有标志、包括和定义
我在linux上使用CMake 3.12,我试图从目标中以编程方式提取所有标志、包含和定义。 我在网上找到了一些帮助,但它总是局限于CMake产生的默认设置 例如,使用变量:CMake以编程方式获取所有标志、包括和定义,cmake,Cmake,我在linux上使用CMake 3.12,我试图从目标中以编程方式提取所有标志、包含和定义。 我在网上找到了一些帮助,但它总是局限于CMake产生的默认设置 例如,使用变量: CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE ... 这里我缺少外部标志。 我偶然发现了位于项目构建文件夹中的文件“flags.make”: # CMAKE generated file: DO NOT EDIT! # Generated by
CMAKE_CXX_FLAGS
CMAKE_CXX_FLAGS_DEBUG
CMAKE_CXX_FLAGS_RELEASE
...
这里我缺少外部标志。
我偶然发现了位于项目构建文件夹中的文件“flags.make”:
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.12
# compile C with /usr/bin/gcc-4.8
C_FLAGS = -O3 -DNDEBUG -fPIC
C_DEFINES = -DLINUX -DLINUX64 -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
C_INCLUDES =
这正是我需要的。有人知道如何在CMake中访问这些变量吗
谢谢大家!
致意
Fabian“我试图从一个项目中提取所有标志,包括并以编程方式定义。”-单个项目可能有多个目标(可执行文件和/或库),它们有自己的标志集。此外,单个目标可能有多个源文件,每个源文件都使用自己的标志进行编译。所以不清楚“项目标志”是什么意思。如果您想查看编译一个或另一个源文件时实际使用的标志,或链接一个或另一个可执行文件或库时使用的标志,请将
V=1
参数传递到make
。没错,target是更好的措辞。我的问题是,有没有办法从Unix Makefiles生成器访问变量?没有一个CMake变量包含给定源的所有编译器标志。这些标志由CMake变量--CMake_CXX_标志
,CMake_CXX_标志
)和几个目标的属性组成。此外,部分标志从属性中提取到其他目标,成功配置后(通过target\u link\u libraries
)链接到给定的target.CMake生成compile\u commands.json
文件。您可以尝试使用它。“我尝试从项目中以编程方式提取所有标志、包含和定义。”-单个项目可能有多个目标(可执行文件和/或库),它们有自己的标志集。此外,单个目标可能有多个源文件,每个源文件都使用自己的标志进行编译。所以不清楚“项目标志”是什么意思。如果您想查看编译一个或另一个源文件时实际使用的标志,或链接一个或另一个可执行文件或库时使用的标志,请将V=1
参数传递到make
。没错,target是更好的措辞。我的问题是,有没有办法从Unix Makefiles生成器访问变量?没有一个CMake变量包含给定源的所有编译器标志。这些标志由CMake变量--CMake_CXX_标志
,CMake_CXX_标志
)和几个目标的属性组成。此外,部分标志从属性中提取到其他目标,成功配置后(通过target\u link\u libraries
)链接到给定的target.CMake生成compile\u commands.json
文件。你可以试着用它。