小编Vir*_*ile的帖子

使用cmake为单个目标生成编译数据库

我正在使用CMAKE_EXPORT_COMPILE_COMMANDS变量 ofcmake来获取一个 json 编译数据库,然后我可以解析该数据库以识别为每个源文件提供给编译器的选项。现在,我正在处理的项目有多个目标,并且在数据库中的不同目标中使用了多次源文件,如下面的示例所示:

f.c

int main () { return MACRO; }
Run Code Online (Sandbox Code Playgroud)

CMakeLists.txt

cmake_minimum_required (VERSION 2.6)
project (Test)
add_executable(test1 f.c)
add_executable(test2 f.c)
target_compile_options(test1 PUBLIC -DMACRO=1)
target_compile_options(test2 PUBLIC -DMACRO=2)
Run Code Online (Sandbox Code Playgroud)

运行cmake . -DCMAKE_EXPORT_COMPILE_COMMANDS=1将生成以下compile-commands.json文件,其中包含两个条目f.c,并且没有简单的方法来区分它们。

cmake_minimum_required (VERSION 2.6)
project (Test)
add_executable(test1 f.c)
add_executable(test2 f.c)
target_compile_options(test1 PUBLIC -DMACRO=1)
target_compile_options(test2 PUBLIC -DMACRO=2)
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来指定我只对例如 target 感兴趣test1,因为您可以在构建工具模式下使用--target,最好无需修改CMakeLists.txt,但这不是主要问题。我想什么来避免,在另一方面,是阅读的争论-o"command"之间进入和判别test1.dirtest2.dir路径组件。

cmake

7
推荐指数
1
解决办法
1195
查看次数

标签 统计

cmake ×1