CMake和VisualStudio:解决方案资源管理器中的组文件

时间:2016-12-10 18:23:41

标签: c++ visual-studio cmake cmake-gui

要完成一个项目的长编码会话,我想测试我的CPP项目是否可以在OS的安排上进行编译。

我一直在Win10工作。编译好。
我试过一个Raspberry Pi。编译好。 我将我的项目的单独副本重新下载到Win10客户端,运行cmake-gui,然后打开项目:解决方案资源管理器中的文件夹结构全部消失。

所以我开始挖掘,显然这个结构使用命令source_group保存在CMakeLists.txt中。所以我开始在我的cmake列表中添加更多source_groupings,由于某些原因我的分组不会。

例:
source_group("game\\entitysystem" FILES ${entitysystem_SRC}) // Existing grouping source_group("game\\entitysystem\\components" FILES ${components_SRC}) // My new grouping

我的全球化将是这样的:

file(GLOB components_SRC "game/components/*.h" "game/components/*.cpp" )

file(GLOB entitysystem_SRC "game/entitysystem/*.h" "game/entitysystem/*.cpp" )

我相信我的GLOB是正确的,因为新的项目克隆编译得很好。只是Visual Studio的解决方案资源管理器中新结构的每个部分都丢失了。是的,我已经清除了Cmake的缓存并重新生成了该项目。不改变它。

原始结构: Original folder structure

克隆项目结构: Cloned folder structure

编辑:

我确实在source_group中犯了一个错误,因为它不应该将组件放在entitysystem下面,但是,为什么在Visual Studio中没有创建任何过滤器?

1 个答案:

答案 0 :(得分:1)

首先,确保您正在设置radial.plot(m, radial.pos=c(1,2,3,4,5,6,7,8,9,10,11,12), labels="", rp.type="r", line.col=8, lwd=3, add=TRUE)

其次,建议不要使用radial.plot来收集源文件列表。来自set_property(GLOBAL PROPERTY USE_FOLDERS ON)文档:

  

我们不建议使用GLOB从源树中收集源文件列表。如果在添加或删除源时没有更改CMakeLists.txt文件,则生成的构建系统无法知道何时要求CMake重新生成。

列出项目文件的推荐方法是手动将它们添加到CMakeLists.txt。

如果您仍想GLOB,看起来您想要镜像源树中的目录结构。您可以在定义库或可执行文件的每个位置使用此类宏来自动为您排序:

file(GLOB