小编Max*_*Max的帖子

使用cmake有条件地生成源输入文件

我正在使用cmake和C++项目.我想在GCC中使用预编译头文件.

我想运行cmake一次,然后在运行时make,我希望这些操作发生:

  1. 在整个源代码树上运行我的自定义工具(python脚本).它在一些子目录中生成precompiled.h头文件.它的目的是扫描*.h和*.cpp用于#include并将它们移动到常见的precompiled.h文件.
  2. g++ -c precompiled.h -o precompiled.h.gch仅当precompiled.h文件在步骤1之后发生更改时,才生成GCC的预编译头文件().
  3. 构建过时的目标(在第2步之后,因为我想使用.gch文件)

我设法添加依赖项,所以每当我构建任何目标时,我的python脚本的目标都会被执行(这很难看,因为现在每个目标都必须依赖于单个global_init目标).此外,我可以修改我的python脚本,因此它不会在没有必要时修改precompiled.h.

但我不知道接下来该做什么.有没有办法告诉cmake它应该运行我的自定义脚本,并确定是否必须创建precompiled.h.gch?现在它始终构建(此文件包含许多#include,因此需要一些时间).基本上:

  1. 执行python脚本 - > precompiled.h可能会更新
  2. 检查precompiled.h时间戳,如果它更新 - > build precompiled.h.gch
  3. 标准编译步骤

我在许多地方看过,但是cmake(和make)计算依赖关系的方式似乎太弱而无法完成这项任务.

在这个问题中: 懒惰的c ++ 编译总是在执行lazycpp之后发生.在我的情况下,这不是最佳的.

c++ gcc makefile cmake precompiled-headers

2
推荐指数
1
解决办法
5220
查看次数

标签 统计

c++ ×1

cmake ×1

gcc ×1

makefile ×1

precompiled-headers ×1