CMake在带有CMakeLists.txt文件夹的文件中生成VS项目文件
CMake generating VS project files in the files with the CMakeLists.txt folders
我正在努力学习CMake,并努力实现我习惯于使用visual studio制作的项目布局。
我想实现如下目录结构,其中.vcxproj和.sln由CMake生成
Root
CMakeLists.txt
MySolution.sln
ProjectOne
CMakeLists.txt
ProjectOne.vcxproj
someSourceFile1.h
someSourceFile1.cpp
ProjectTwo
CMakeLists.txt
ProjectTwo.vcxproj
someSourceFile2.h
someSourceFile2.cpp
Binaries
Platform
Debug
ProjectOne.exe
ProjectTwo.dll
Release
ProjectOne.exe
ProjectTwo.dll
我找到的所有教程似乎都给出了一个例子,其中的结构是这样的:
Root
Source
CMakeLists.txt
ProjectOne
CMakeLists.txt
someSourceFile1.h
someSourceFile1.cpp
ProjectTwo
CMakeLists.txt
someSourceFile2.h
someSourceFile2.cpp
Build
MySolution.sln
ProjectTwo.vcxproj
ProjectOne.vcxproj
Platform
Debug
ProjectOne.exe
ProjectTwo.dll
Release
ProjectOne.exe
ProjectTwo.dll
使用等命令
mkdir Build
cd build
CMake ..Source
CMake --Build .
值得注意的是,我没有添加生成的ALL_BUILD.vcxproj和ZERO_CHECK.vcxproj,我还没有理解我的需求。
- CMakeList.txt中是否缺少一个执行此操作的命令
- 我有什么理由不按自己想要的方式布置我的项目吗
在做更多的研究时,我偶然发现Visual Studio将新文件放入错误的目录这让我觉得我不能把我的dev和dist构建与CMake混合在一起。
感谢fabian的有益评论,你可以真正构建我想要的结构,并且习惯于这样做。
如果你想让它用于某些而不是其他版本,你可以让它只使用特定版本的文件夹。
project(MySolution)
cmake_minimum_required(VERSION 3.2)
# Use solution folders if I'm using VS change to whatever your dev platform is
IF(MSVC)
SET_PROPERTY(GLOBAL PROPERTY USE_FOLDERS ON)
ENDIF()
add_subdirectory(MyFolderName)
有了它,您的开发构建确实需要从\source文件夹调用CMake,在该文件夹中,需要从\build目录调用分发构建来分离文件。
我猜有一些方法可以使用更多的If((。。。Else((。。。Endif((在一个特定的文件夹中根据构建类型生成。
环顾四周,我认为最简单的方法可能只是将另一种脚本语言放在上面,它只会根据构建类型从不同的目录中调用cmake命令。
Windows.scriptTypeLinux.scriptType等等。
除非某个善良的灵魂能告诉我如何在CMake 中做到这一点
相关文章:
- 如何识别项目是 QT 中的文件还是文件夹
- 如何在 VSCODE 中设置项目文件夹并链接所有 CPP 文件
- 使用 Premake5 构建库,每个构建没有单独的项目文件
- CMake 如何强制third_party库将项目文件包含在当前项目源目录中?
- 当包含头文件的文件不在根项目文件夹中时,如何包含它
- Qt创建者:加载位于子目录中的项目文件
- Visual Studio跨平台生成文件项目,找不到命令
- 配置过程项目文件中的错误可能无效
- 哪些 Netbeans 8.2 项目文件应提交到C++项目的版本控制?
- C++错误LNK2005和不同项目文件的常规继承
- 如何将包含C++文件的文件夹添加到 NetBeans 项目中
- 为什么我的QTRPT项目文件未在QTCreator中运行
- C :多文件C 项目中的相互引用的结构
- 正确地在多文件项目中#CRUDING SDL
- 严重性代码说明项目文件行抑制状态错误 C2676 二进制">>":"std::ifstream"
- 如何在运行qmake时将变量传递到qmake项目文件
- 如何使用QPixmap,以便在地址中只需要使用项目文件夹
- CMake 插入不带文件夹前缀的项目文件
- QT无法解析项目文件
- 将静态库链接行添加到我的QT项目文件没有区别