假设我有a.cpp
作为来源,我将其添加到cmake目标:
add_executable(MY_TARG a.cpp)
如果a.cpp
包含a.h
,它将作为目标的依赖项添加,当我更改标题时,所有内容都会得到正确重建,但a.h
不会显示在我的项目的源列表中(例如在Visual Studio中)。
有没有办法在那里添加?
我可以区分系统标头(如<vector>
)和来自同一目录结构的文件夹中的标头吗?我可能只想添加引号中包含的标题而不是括号("header.h"
而不是<header.h>
)
我正在寻找一些自动的东西 - 我已经有很多CMakeLists.txt文件,其中只列出了.cpp文件,所有这些文件都是不切实际的。
答案 0 :(得分:2)
这很简单 - 如果您希望将文件列为IDE中项目的一部分,请将其列为CMake中目标的一部分:
add_executable(MY_TARG a.cpp a.h)
CMake知道它足以将其识别为标题(因此不会尝试编译它),但它会在生成的IDE项目中列出它。
修改强>
根据寻找自动更改现有系统的附加信息,我不认为这很容易。但它应该仍然可行。编译器通常有一种方法来列出他们编译的文件所包含的标题(例如gcc有-MM
)。您应该能够使用此输出和您喜欢的文本处理语言构建一次性转换脚本。