使用CMake和Xcode:修改CMakeLists.txt时保持项目更改

Yup*_*ing 30 xcode cmake

首先,我从未使用Xcode开发过.我有一个项目是由我在特定环境(Linux和emacs)下开发的,现在一些使用不同环境的同事将与我合作.这是一个使用CMake的C++项目.

长话短说:

  • 我使用Linux/emacs.其他开发人员使用mac/Xcode.
  • 我使用GNU Makefiles生成器.他们使用Xcode生成器.
  • 一切似乎都运转正常.

问题

Xcode开发人员将使用Xcode 的Group&Files窗口的Executables列表下显示的可执行文件.他们将通过双击并添加他们的调整来配置它(配置调试目录,设置环境变量,但更重要的是,设置可执行文件的参数).

当开发人员(我)更改CMakeLists.txt(即添加新的源文件)时,XCode开发人员被迫重新生成他们的项目,他们将失去上面提到的所有配置.

问题:有没有办法避免这种情况?

如果每个Xcode开发人员不断丢失该配置,我肯定会是唯一使用CMake的人.:(

谢谢你的帮助!

Dan*_*zek 11

我想你会失去这一个.Xcode将所有项目定义存储在名为Foo.xcodeproj/project.pbxproj的文件中.当您的某个Mac开发人员更改标志或设置时,它会记录在project.pbxproj文件中.当您更改CMakeLists.txt文件时,CMake会触发project.pbxproj的重建,从而消除所有Mac开发人员的更改.Xcode的设计并没有考虑到CMake,它们只能很好地协同工作.

一种可能的解决方案(对于Mac开发人员来说不是最好的)是使用CMake生成makefile.他们需要在Xcode中编写一些自定义命令,调用CMake/Make来构建可执行文件,但是他们可以将参数传递给CMake来控制构建过程.可执行文件将分别定义为Xcode,而CMake只会清除Makefile.这可能是让每个人都开心的方式.

恕我直言,CMake人员没有给予Xcode应有的关注.但这种限制是Xcode架构中固有的,并且将是一个棘手的问题.

希望这有帮助,
-dan

编辑:

您的Xcode开发人员使用"用户定义的设置"的能力有限.我不知道如何使用这些(我是一个emacs/make-kind的家伙),但也许他们可以使用这些来覆盖CMake的设置.


Rud*_*udi 10

您可以添加运行程序的目标add_custom_target(foobar COMMAND foo --bar DEPENDS foo).您也可以调用脚本而不是程序,在那里很容易设置环境变量(我在Win32下使用此设置来调整VC中的路径).此脚本也可以是VCS中的模板,因此每个开发人员都拥有自己的脚本版本以及实际的命令行参数.