22

This is what I have, when I started generation:

iMac:IXCSoftswitch alex$ /usr/bin/cmake -G Xcode .
-- CMAKE_SOURCE_DIR = /Users/alex/Desktop/ixc-v/IXCSoftswitch,   CMAKE_BINARY_DIR = /Users/alex/Desktop/ixc-v/IXCSoftswitch
CMake Error at CMakeLists.txt:25 (MESSAGE):
  Binary and source directory cannot be the same


-- Configuring incomplete, errors occurred!

How can I fix it? I'm new to CMake, samples appreciated.

4

2 回答 2

66

CMake 用于生成源外构建。

这里的想法是不要将编译期间创建的文件与原始源文件混合。在实践中,您通常从一个新的空构建目录运行 CMake,并将源目录的路径作为参数提供。

cd IXCSoftswitch
mkdir build
cd build
cmake -G Xcode ..

CMake 生成的所有文件(可能很多)现在都将进入build子目录,而您的源目录保持干净的构建工件。

外源构建的概念起初可能看起来很奇怪,但一旦你习惯了它,它实际上是一种非常方便的工作方式。

于 2013-05-22T20:28:02.783 回答
8

从项目目录的根目录。

cmake -G Xcode -H. -B_build

这与上面的答案类似。但是,您正在手动管理源代码外构建。-B 设置您的目标构建目录(我碰巧更喜欢_build)。我尝试查找 -H 以仔细检查,但找不到。如果有记忆,它会指定您的 CMakeLists.txt 所在的位置。

我将此命令保存在 .sh/.bat 文件中(取决于)。这样,我可以将构建项目的脚本保存在根目录中,以便新人可以轻松找到它们。

于 2017-06-03T22:20:44.370 回答