【问题标题】:Folder structure for a Visual Studio 2017 with CMake带有 CMake 的 Visual Studio 2017 的文件夹结构
【发布时间】:2019-07-23 11:24:40
【问题描述】:

我正在使用 Qt 使用 C++ 编写一个新项目,该项目使用 CMake 生成解决方案。

该项目很大,在 Visual Studio 2017 和 QtCreator 中运行良好。大多数人使用 Ninja 生成构建解决方案并将构建导入 QtCreator。但我更喜欢使用 VS IDE。

问题在于,使用 QtCreator,解决方案资源管理器会保留文件夹结构,但在 VS 中,所有项目(libs 和 dll)都从解决方案(根目录)挂起,所以我丢失了一些有价值的信息。

我是 CMake 的新手,我想知道是否有一种方法可以生成具有与源代码相同的文件夹结构而不影响 QtCreator 解决方案的 VS 解决方案。

【问题讨论】:

  • 可能重复,因为 Stackoverflow 上还有其他类似的问题。如果您希望您的解决方案资源管理器保持与文件系统本身相同的文件夹结构,CMake 可以通过GLOB_RECURSE 支持它。看到这个post
  • 我认为这不是我想要的。
  • "...我想知道是否有办法生成与源代码具有相同文件夹结构的 VS 解决方案" - 我链接的帖子确实对此提出解决方案。但是,如果这不是您要查找的内容,则不清楚您要问的是什么。你能澄清你的问题吗?
  • 您链接的帖子解释了如何递归扫描文件夹以获取项目中的源文件列表。这并不意味着 VS 将以与它们在文件系统中相同的方式显示项目列表。我的项目已经获得了必要的源文件,我不需要递归查找它们......我只是一个 VS 以相同的结构显示项目。
  • 感谢指正,我不是英语母语人士。

标签: visual-studio cmake qt-creator directory-structure


【解决方案1】:

CMake 支持将 Visual Studio 解决方案资源管理器中的项目组织到文件夹中,因此您可以命名文件夹以反映系统上的目录结构。例如,如果您的项目是这样组织的:

Utilities/LibraryA
Utilities/LibraryB
Executables/tools/ParserExecutable

您可以使用 set_target_properties 命令和 FOLDER 在 VS 解决方案资源管理器中为每个项目指定包含文件夹:

实用程序/CMakeLists.txt

set_target_properties(LibraryA PROPERTIES FOLDER "Utilities")
set_target_properties(LibraryB PROPERTIES FOLDER "Utilities")

可执行文件/工具/CMakeLists.txt

set_target_properties(ParserExecutable PROPERTIES FOLDER "Executables/tools")

您可以尝试使用CMAKE_CURRENT_SOURCE_DIR 来自动执行此操作,而不是显式命名文件夹,但首先要从一个简单的案例开始!

此外,请确保将其添加到顶级 CMake 中,以便为您的项目启用 VS 文件夹。

set_property(GLOBAL PROPERTY USE_FOLDERS ON)

【讨论】:

    猜你喜欢
    • 2017-08-22
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    • 2017-10-27
    相关资源
    最近更新 更多