您的困惑是您想要使用 CMake 生成一个构建文件集,该文件集是从
源树,然后in生成的构建文件集运行 IDE 项目
那是not从源树中移位。你不能两全其美。
CMake 构建目录,无论是源内还是源外,都是
CMake 将为您的项目生成构建文件的目录,
对于某些目标构建系统。这些工件为最终用户提供服务
想要从打包的源代码构建您的项目。你需要区分目标
构建系统 from 您的开发环境。您的开发环境
是个人生产力的选择,与目标构建系统没有本质联系。
您的目标构建系统是 Visual Studio,这只是巧合,所以
是你的开发环境。相反,想象一下您的开发环境是 Code::Blocks,
您的目标构建系统是 GNU Make,并使用 CMake 来生成 GNU Make 构建文件。
在这种情况下,你有一个 Code::Blocks.cbp
定义的项目文件
你的发展项目,以及定义可分发的 CMakeLists.txt 文件
GNU Make 构建。
CMake 项目和 Code::Blocks 项目彼此没有联系
除了连接你选根据通用工具、文件和目标进行制作。
您的开发项目中可能有比您更多的文件和/或目标
选择反映在 CMakeLists.txt 中。目标工具链可能不同
来自开发工具链。就CMake项目而言并不重要
在 Code::Blocks 的所有地方.cbp
文件驻留或者如果存在这样的东西,尽管you将要
想要.cbp
文件以及CMakeLists.txt
处于源代码控制之下在你的开发分支中.
当您运行 CMake 并创建构建文件时,您不会被迫stop使用
您的 CodeBlocks 项目就地作为您的开发环境,并且以某种方式
迁移开发环境进入构建文件文件夹。甚至
如果您指示 CMake 生成 Code::Blocks.cbp
文件在构建文件中,
这样包的最终用户就可以使用 Code::Blocks 来构建它,那么您就不会想要
开始使用that项目文件与您的开发环境一样:它是运行 CMake 的一次性工件。
如果您想使用 Visual Studio 开发项目,请以正常关系创建一个 VS 项目用于您的开发目的
源树。创建一个 CMake 项目,以便在目标构建系统上分发该项目。忘记附带的
事实上,目标构建系统也是 Visual Studio。保持 CMake 项目的文件和目标与
您的开发项目的那些内容(CMake 项目是最新的)
每当你构建它时。当然,还要确保您运行的门控测试(用于提交、发布或其他任何操作)都在 CMake 构建上运行。
如果您对分发项目不感兴趣并且正在使用 CMakemerely为了
生成一个 Visual Studio 项目来开发它的目的 - 那么
与仅在 Visual Studio 中开发相比,这将是一种无端费力的替代方案 -
但如果这是你想做的,你必须清楚 CMake 和 Visual Studio 不能both控制
项目的组成。 CMake 控制它,VS 项目只是一个 CMake 工件。如果你想
将文件添加到项目或以任何其他方式更改它,那么您必须这样做CMakeLists.txt
,然后重新运行 CMake 并accept这
VS 项目退出了——即使你不太喜欢它的外观。