Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在多部分cmake项目中获得源代码外构建的正确方法_Cmake_Out Of Source - Fatal编程技术网

在多部分cmake项目中获得源代码外构建的正确方法

在多部分cmake项目中获得源代码外构建的正确方法,cmake,out-of-source,Cmake,Out Of Source,我使用cmake构建、测试和安装我的项目。 我的方法有点粗糙:我使用这样的脚本来获得一个源代码外构建: DIR=debug_build && rm -fr ./${DIR} && mkdir -p ${DIR} && cd ${DIR} && cmake -D CMAKE_BUILD_TYPE=Debug $@ .. && make 我想我至少可以把它放到makefile中,但是使用makefile运行cmake

我使用cmake构建、测试和安装我的项目。 我的方法有点粗糙:我使用这样的脚本来获得一个源代码外构建:

DIR=debug_build &&
rm -fr ./${DIR} &&
mkdir -p ${DIR} &&
cd ${DIR} &&
cmake -D CMAKE_BUILD_TYPE=Debug $@ .. &&
make 
我想我至少可以把它放到makefile中,但是使用makefile运行cmake生成新的makefile并运行另一个make不是很奇怪吗

正确的方法是什么? cmake是否有避免调用“cd”的选项

最近,当我读出一个我想单独编译、测试和分发的库时,它变得更加复杂。我希望避免重复我的顶级CMakeLists.txt中的所有内容


如何正确使用cmake?

这似乎是最常见的处理方式。我通常会看到(并使用)批处理脚本(unix上的shell脚本,或Windows上的批处理文件)来处理此问题,因此运行./build将创建生成文件夹,CD在那里,运行cmake,build,然后返回原始文件夹。

否,cmake没有任何此类选项。我通常喜欢使用包装器Makefile来控制CMake调用


这里的主要问题是,Makefile生成器不支持在运行make时指定配置,就像VisualStudio生成器一样。我认为这是一个功能请求文件,但要修复它将是一个非常侵入性的过程。

也可以使用CMake GUI,如果不存在,它将自动创建构建文件夹。

您能否详细说明使用make控制CMake的主要问题?使用包装器Makefile控制CMake真的没有问题。我指的是,为了支持构建多个配置,必须使用多个构建目录。