visual-studio - 带有 CMake 的 Visual Studio 2017 的文件夹结构
问题描述
我正在使用 Qt 在 C++ 中的一个新项目中工作,该项目使用 CMake 生成解决方案。
该项目非常大,在 Visual Studio 2017 和 QtCreator 中运行良好。大多数人使用 Ninja 生成构建解决方案并将构建导入 QtCreator。但我更喜欢使用 VS IDE。
问题在于,使用 QtCreator,解决方案资源管理器保留了文件夹结构,但在 VS 中,所有项目(libs 和 dll)都从解决方案(根目录)挂起,所以我丢失了一些有价值的信息。
我是 CMake 的新手,我想知道是否有一种方法可以生成具有与源代码相同的文件夹结构而不影响 QtCreator 解决方案的 VS 解决方案。
解决方案
CMake 确实支持将 Visual Studio 解决方案资源管理器中的项目组织到文件夹中,因此您可以命名文件夹以反映系统上的目录结构。例如,如果您的项目是这样组织的:
Utilities/LibraryA
Utilities/LibraryB
Executables/tools/ParserExecutable
您可以使用set_target_properties
命令 withFOLDER
为 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)
推荐阅读
- ckan - CKAN 按资源 last_modified 和 created 属性对数据集进行排序
- python - 是否可以限制不和谐中的不同用户根据他们的角色对嵌入做出反应?
- php - 在 Laravel updateOrCreate 中执行加法操作
- ruby - Jekyll 在生成时崩溃:分段错误
- c++ - std::lock_guard 和 std::adopt_lock 行为而不锁定互斥锁
- apache-kafka - 如何使用 Kafka Streams 将消息集合处理到主题
- python - 如何使用 pyodbc 对 SQL Server 进行 Windows 身份验证
- office-js - 在 Angular Office.js 插件中使用 Microsoft Access 令牌真的不可能吗?
- javascript - 未捕获的类型错误:bot.setMyCommands 不是函数
- c++ - OPENCV 使用来自 pytorch 的 onnx 模型