首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无限循环调用cmake,为什么?

无限循环调用cmake,为什么?
EN

Stack Overflow用户
提问于 2013-06-28 09:19:43
回答 1查看 3.5K关注 0票数 2

我有以下使用clang的扫描构建工具进行静态分析构建的脚本:

代码语言:javascript
复制
#!/usr/bin/env bash

export CC=clang
export CXX=clang++
export CCC_CC=$CC
export CCC_CXX=$CXX
mkdir -p static-analysis/build
cd static-analysis/build
cmake -DCMAKE_C_COMPILER=ccc-analyzer -DCMAKE_CXX_COMPILER=c++-analyzer ../..
scan-build -o .. --use-analyzer /usr/local/bin/clang --html-title="craft static analysis" make -j`getconf _NPROCESSORS_ONLN`

该脚本在第一次执行时工作正常,但以下执行会导致无限循环:

代码语言:javascript
复制
-- Configuring done
You have changed variables that require your cache to be deleted.
Configure will be re-run and you may have to reset some variables.
The following variables have changed:
CMAKE_CXX_COMPILER= c++-analyzer

-- Configuring done
You have changed variables that require your cache to be deleted.
Configure will be re-run and you may have to reset some variables.
The following variables have changed:
CMAKE_CXX_COMPILER= c++-analyzer

.
.
.

我没有做任何更改,只是删除了整个build目录,以便cmake调用再次工作。而且,只调用scan-build而不调用cmake也没有问题。

编辑

通过查看cmake生成的文件,我发现它引用的是-DCMAKE_CXX_COMPILER设置的完整路径,我只传递了c++-analyzer,因为它在我的路径上。我怀疑在c++analyzer和它的完整路径之间有一些失败的比较。解决方法是在调用cmake时使用绝对路径传递-DCMAKE_CXX_COMPILER,这样比较就会成功。这看起来像是个bug。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-28 10:25:07

如问题编辑中所述,解决此问题的方法是使用:

代码语言:javascript
复制
cmake -DCMAKE_C_COMPILER=`which ccc-analyzer` \
-DCMAKE_CXX_COMPILER=`which c++-analyzer` ../..
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17355798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档