2014-03-12 15 views
3

假设我有a.cpp作为源,我把它添加到一个cmake的目标:源文件的一些头依赖,加入到解决方案资源管理器cmake的目标

add_executable(MY_TARG a.cpp) 

如果a.cpp包括a.h它将被添加作为一个依赖对于目标,当我更改标题时,所有内容都将得到正确的重建,但a.h不会显示在我的项目的源代码列表中(例如在Visual Studio中)。

有没有办法在那里添加它? 我可以区分系统标题(如<vector>)和来自同一目录结构中文件夹的标题吗?我可能希望只添加标题包含引号,而不是用括号("header.h"而不是<header.h>

我在寻找的东西自动 - 我已经有很多的CMakeLists.txt文件与上市那里去只有.cpp文件通过所有这些似乎不切实际。

+0

我编辑了我的答案,列出了可能的自动化方式。 – Angew

回答

2

这是相当简单 - 如果你想有一个文件被列为IDE中的一个项目的一部分,将其列为在C进行目标的一部分:

add_executable(MY_TARG a.cpp a.h) 

的CMake知道的足够多将其识别为一个头文件(因此不会尝试编译它),但它会在生成的IDE项目中列出它。

编辑基于寻找自动改变现有系统的附加信息

,我不认为这是很容易。但它应该仍然是可行的。编译器通常可以列出他们编译的文件包含的头文件(例如,gcc有-MM)。您应该能够使用此输出和您最喜爱的文本处理语言来构建一次性转换脚本。

+0

似乎我不能只是插入一个'-MM'开关到cmake中的我的CXX标志,并期望看到输出:) 我将不得不在我的cmake文件之外编写一个单独的脚本。 – onqtam

相关问题