我正在和一个朋友一起做一个项目,同时使用GitHub工作。我是git的新手,当我们中的一个人将更改推送到GitHub时,它会更改构建文件夹并更改CMake文件中的设置。我们如何在不影响彼此构建文件的情况下使用git?
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可以重新生成任何需要更新的项目/构建系统文件。
pkwftd7m2#
添加一个.gitignore文件(在根目录下),其中包含您不想版本化的目录/文件列表,即:您的构建目录...
.gitignore
bvjveswy3#
作为一种分发配置的机制,您可能希望尝试presents(我自己也是刚刚发现的,但它们似乎可以解决您的问题)。https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html
3条答案
按热度按时间wgeznvg71#
CMake构建目录应该包含通过CMake生成的文件和目录,并且不需要保存在源代码控制中。
我在Github上做过几个基于CMake的项目。在我的经验中,将build文件夹签入到你的git仓库(或任何源代码控制)从来都不是一个标准的做法。
与非CMake项目相比,CMake项目的一个巨大优势是构建工件(例如Visual Studio项目文件和具有用户特定设置的IDE文件)不需要签入到存储库中; CMake为您生成这些!
一个简单的基于CMake的项目结构如下所示。您应该将CMakeLists.txt文件和源代码签入到git(或其他)源代码控制中。但是,我高度鼓励你构建你的项目,这样你的CMake二进制目录中的任何东西都不需要被源代码控制跟踪:
字符串
这样,每个使用仓库的人都有自己的CMake构建目录。如果需要对构建版本进行更改,这些更改应反映在CMakeLists.txt文件中。然后,当对CMakeLists.txt文件的更改被拉到本地存储库时,CMake可以重新生成任何需要更新的项目/构建系统文件。
pkwftd7m2#
添加一个
.gitignore
文件(在根目录下),其中包含您不想版本化的目录/文件列表,即:您的构建目录...bvjveswy3#
作为一种分发配置的机制,您可能希望尝试presents(我自己也是刚刚发现的,但它们似乎可以解决您的问题)。https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html