使用 CMake 的 Visual Studio 2017 的文件夹结构
Folder structure for a Visual Studio 2017 with CMake
我正在使用 Qt 使用 C++ 开发一个新项目,该项目使用 CMake 生成解决方案。
该项目相当大,在 Visual Studio 2017 和 QtCreator 中都运行良好。大多数人使用 Ninja 生成构建解决方案并将构建导入 QtCreator。但我更喜欢使用 VS IDE.
问题是 QtCreator 的解决方案资源管理器保持文件夹结构,但在 VS 中,所有项目(库和 dll)都从解决方案(根目录)挂起,所以我丢失了一些有价值的信息。
我是 CMake 的新手,我想知道是否有一种方法可以在不影响 QtCreator 解决方案的情况下生成与源代码具有相同文件夹结构的 VS 解决方案。
CMake 确实支持将 Visual Studio 解决方案资源管理器中的项目组织到文件夹中,因此您可以命名文件夹以反映系统上的目录结构。例如,如果您的项目是这样组织的:
Utilities/LibraryA
Utilities/LibraryB
Executables/tools/ParserExecutable
您可以在 VS Solution Explorer 中使用 set_target_properties
command with FOLDER
指定每个项目的包含文件夹:
Utilities/CMakeLists.txt:
set_target_properties(LibraryA PROPERTIES FOLDER "Utilities")
set_target_properties(LibraryB PROPERTIES FOLDER "Utilities")
Executables/tools/CMakeLists.txt:
set_target_properties(ParserExecutable PROPERTIES FOLDER "Executables/tools")
您可以尝试使用 CMAKE_CURRENT_SOURCE_DIR
来自动执行此操作,而不是明确命名文件夹,但首先从一个简单的案例开始!
此外,请确保将其添加到您的顶级 CMake 中,以便为您的项目启用 VS 文件夹。
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
我正在使用 Qt 使用 C++ 开发一个新项目,该项目使用 CMake 生成解决方案。
该项目相当大,在 Visual Studio 2017 和 QtCreator 中都运行良好。大多数人使用 Ninja 生成构建解决方案并将构建导入 QtCreator。但我更喜欢使用 VS IDE.
问题是 QtCreator 的解决方案资源管理器保持文件夹结构,但在 VS 中,所有项目(库和 dll)都从解决方案(根目录)挂起,所以我丢失了一些有价值的信息。
我是 CMake 的新手,我想知道是否有一种方法可以在不影响 QtCreator 解决方案的情况下生成与源代码具有相同文件夹结构的 VS 解决方案。
CMake 确实支持将 Visual Studio 解决方案资源管理器中的项目组织到文件夹中,因此您可以命名文件夹以反映系统上的目录结构。例如,如果您的项目是这样组织的:
Utilities/LibraryA
Utilities/LibraryB
Executables/tools/ParserExecutable
您可以在 VS Solution Explorer 中使用 set_target_properties
command with FOLDER
指定每个项目的包含文件夹:
Utilities/CMakeLists.txt:
set_target_properties(LibraryA PROPERTIES FOLDER "Utilities")
set_target_properties(LibraryB PROPERTIES FOLDER "Utilities")
Executables/tools/CMakeLists.txt:
set_target_properties(ParserExecutable PROPERTIES FOLDER "Executables/tools")
您可以尝试使用 CMAKE_CURRENT_SOURCE_DIR
来自动执行此操作,而不是明确命名文件夹,但首先从一个简单的案例开始!
此外,请确保将其添加到您的顶级 CMake 中,以便为您的项目启用 VS 文件夹。
set_property(GLOBAL PROPERTY USE_FOLDERS ON)