Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将源文件的某些头依赖项添加到cmake目标的解决方案资源管理器_C++_Visual C++_Cmake - Fatal编程技术网

C++ 将源文件的某些头依赖项添加到cmake目标的解决方案资源管理器

C++ 将源文件的某些头依赖项添加到cmake目标的解决方案资源管理器,c++,visual-c++,cmake,C++,Visual C++,Cmake,假设我将a.cpp作为源,并将其添加到cmake目标: add_executable(MY_TARG a.cpp) 如果a.cpp包含a.h它将作为目标的依赖项添加,并且当我更改标题时,所有内容都将正确重建,但是a.h不会显示在我的项目的源列表中(例如在visual studio中) 有没有办法把它加进去? 我能区分系统标题(如)和来自同一目录结构的文件夹的标题吗?我可能希望只添加包含引号的标题,而不添加括号(“header.h”而不是) 我正在寻找一些自动的东西-我已经有很多CMakeLis

假设我将
a.cpp
作为源,并将其添加到cmake目标:

add_executable(MY_TARG a.cpp)
如果
a.cpp
包含
a.h
它将作为目标的依赖项添加,并且当我更改标题时,所有内容都将正确重建,但是
a.h
不会显示在我的项目的源列表中(例如在visual studio中)

有没有办法把它加进去? 我能区分系统标题(如
)和来自同一目录结构的文件夹的标题吗?我可能希望只添加包含引号的标题,而不添加括号(
“header.h”
而不是


我正在寻找一些自动的东西-我已经有很多CMakeLists.txt文件,其中只列出了.cpp文件,并且遍历所有这些文件似乎都不现实。

这相当简单-如果您希望某个文件在IDE中作为项目的一部分列出,请在CMake中将其作为目标的一部分列出:

add_executable(MY_TARG a.cpp a.h)
CMake知道的足够多,可以将其识别为头文件(因此不会尝试编译),但它会在生成的IDE项目中列出它

编辑


基于对现有系统进行自动更改的附加信息,我认为这并不容易。但这仍然是可行的。编译器通常有一种列出他们编译的文件所包含的头的方法(例如gcc)。您应该能够使用此输出和您最喜欢的文本处理语言构建一次性转换脚本。

我已经编辑了我的答案,列出了一种可能的自动化方法。似乎我不能在cmake中插入一个
-MM
开关到我的CXX标志并期望看到输出:)我必须在外部编写一个单独的脚本我的cmake文件。