2012-06-14 76 views
7

我想包括调试/释放依赖编译器标志,如:CMake的忽略CMAKE_BUILD_TYPE =调试

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x -Wall -DUSE_BOOST") 
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall") 
set(CMAKE_CSS_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O3") 

创建我的build文件夹中的命令,如:

cmake -DCMAKE_BUILD_TYPE=Release -D UseFortran=True -D CMAKE_CXX_COMPILER=g++-4.6 ~/repos/cliques/cliques 

然而,似乎与CMAKE版本2.8.7,CMAKE_BUILD_TYPE被忽略。它似乎与版本2.8.4完美(在不同的机器上),所以这种方法已被弃用或在这里有一些其他问题?

泽纳

+0

它不被弃用。你如何评估它被忽略? – Fraser

+0

可执行文件中没有调试符号,如果我添加了错误的命令,例如设置(CMAKE_CXX_FLAGS_DEBUG“$ {CMAKE_CXX_FLAGS_DEBUG} -Wall许多坏命令”),没有任何效果。 – zenna

+2

必须阅读:http://www.cmake.org/pipermail/cmake/2008-September/023808.html – bitek

回答

4

的问题是,必须有-D和可变之间的空间。也就是说,它应该是:

cmake -D CMAKE_BUILD_TYPE=Release -D UseFortran=True -D CMAKE_CXX_COMPILER=g++-4.6 ~/repos/cliques/cliques 
+1

并且不要忘记定义变量类型。从CMake文档,它是:'-D = ' –

+5

我有_never_不得不在-D之后使用空格。你确定你的'CMAKE_CXX_FLAGS_DEBUG'包含'-g'吗?如果您重新使用了相同的构建目录,则可能会重用变量缓存中的无效值。 – Mark

+0

构建类型'RELEASE'和'Release'是否相同? – nn0p

1

为什么在创建构建文件夹时不使用-DCMAKE_BUILD_TYPE=Debug? Cmake构建发布类型项目或调试类型项目,而不是两个在一起。

2

我认为他们在前一个版本的CMAKE_BUILD_TYPE中犯了一个错字。我们有这个瑕疵,这里有一条可行的路线。

cmake -D CMAKE_BUILD_TYPE:STRING=Debug ../src 

您可以检查每一个东西都很好用:

cmake -L ../src 

使用此命令可以让你对变量命名CMAKE_BUILD_TYPE的正确途径。

祝你好运。

5

您有一个错字。你的代码说CMAKE_CSS_FLAGS_RELEASE。通知CSS,应该是CXX