如何在git仓库中维护CMake项目的构建目录?

gmxoilav  于 2023-08-05  发布在  Git
关注(0)|答案(3)|浏览(151)

我正在和一个朋友一起做一个项目,同时使用GitHub工作。我是git的新手,当我们中的一个人将更改推送到GitHub时,它会更改构建文件夹并更改CMake文件中的设置。我们如何在不影响彼此构建文件的情况下使用git?

wgeznvg7

wgeznvg71#

CMake构建目录应该包含通过CMake生成的文件和目录,并且不需要保存在源代码控制中。
我在Github上做过几个基于CMake的项目。在我的经验中,将build文件夹签入到你的git仓库(或任何源代码控制)从来都不是一个标准的做法。
与非CMake项目相比,CMake项目的一个巨大优势是构建工件(例如Visual Studio项目文件和具有用户特定设置的IDE文件)不需要签入到存储库中; CMake为您生成这些!
一个简单的基于CMake的项目结构如下所示。您应该将CMakeLists.txt文件和源代码签入到git(或其他)源代码控制中。但是,我高度鼓励你构建你的项目,这样你的CMake二进制目录中的任何东西都不需要被源代码控制跟踪:

projectRoot
├───.git/                  
├───build/                  <---- Do NOT check in anything from 'build'.
│   CMakeLists.txt          <---- Check in your top-level CMake source file.
├───src/                    <---- Check in all your code and other CMake files.
│       CMakeLists.txt
│       MyClass.cpp
│       main.cpp

字符串
这样,每个使用仓库的人都有自己的CMake构建目录。如果需要对构建版本进行更改,这些更改应反映在CMakeLists.txt文件中。然后,当对CMakeLists.txt文件的更改被拉到本地存储库时,CMake可以重新生成任何需要更新的项目/构建系统文件。

pkwftd7m

pkwftd7m2#

添加一个.gitignore文件(在根目录下),其中包含您不想版本化的目录/文件列表,即:您的构建目录...

bvjveswy

bvjveswy3#

作为一种分发配置的机制,您可能希望尝试presents(我自己也是刚刚发现的,但它们似乎可以解决您的问题)。https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html

相关问题