15

似乎我们需要为每种构建类型(调试/发布)创建单独的文件夹,在每个构建类型上运行 cmake,并为调试/发布配置生成单独的 makefile。是否可以使用同时支持调试/发布配置的 cmake 创建一个单一的 makefile,并且当我们实际运行“make”时,它将为中间产品和最终产品(如 dll、exe)创建单独的文件夹。

4

2 回答 2

15

据我所知,这不能使用一组构建脚本来实现。但是,您可以做的是在您的工作区有两个子目录:

build/
build/debug
build/release

然后做:

$ cd build
$
$ cd build/debug
$ cmake -DCMAKE_BUILD_TYPE=Debug ../..
$ make
$
$ cd ../release
$ cmake -DCMAKE_BUILD_TYPE=Release ../..
$ make

build如有必要,您可以在目录中添加另一个构建脚本,如下所示:

#!/bin/sh
cd debug   && make && cd ..
cd release && make && cd ..
于 2012-04-10T05:21:25.693 回答
9

这可以使用ADD_CUSTOM_TARGET命令来实现。例如,如果您想在您的 makefile 中添加调试和发布目标,请将以下内容添加到您的 CMakeLists.txt 文件中:

ADD_CUSTOM_TARGET(debug
  COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug ${CMAKE_SOURCE_DIR}
  COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all
  COMMENT "Creating the executable in the debug mode.")

ADD_CUSTOM_TARGET(release
  COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Release ${CMAKE_SOURCE_DIR}
  COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all
  COMMENT "Creating the executable in the release mode.")

然后,用cmake配置好后,就可以运行make debugmake debug target和run make releasemake release target在同一个目录下。

于 2018-01-24T00:20:31.237 回答