Cmake .clang_完成并制作?
我正在使用CMake生成我的生成文件,但是我无法使用标准生成.clangu_completeCmake .clang_完成并制作?,cmake,clang-complete,Cmake,Clang Complete,我正在使用CMake生成我的生成文件,但是我无法使用标准生成.clangu_complete make CC='~/.vim/bin/cc_args.py gcc' CXX='~/.vim/bin/cc_args.py g++' -B 没有生成任何内容 树结构看起来是这样的 Root | |_core | |_src | | |_main.cpp | | |_CMakeLists.txt (1) | |_inc | |_CMakeLists.txt (2) |
make CC='~/.vim/bin/cc_args.py gcc' CXX='~/.vim/bin/cc_args.py g++' -B
没有生成任何内容
树结构看起来是这样的
Root
|
|_core
| |_src
| | |_main.cpp
| | |_CMakeLists.txt (1)
| |_inc
| |_CMakeLists.txt (2)
|
|_lib
| |_rtaudio
|
|_CMakeLists.txt (3)
CMakeLists.txt(1)文件:
CMakeLists.txt(2)文件:
CMakeLists.txt(3)文件:
我做错了什么?您应该运行(在构建目录中)
然后像往常一样运行make
。请注意,每次使用make
构建项目时,这将运行cc_args.py脚本,如果要禁用此功能,请再次重新运行cmake
文件.clang_complete
将在生成目录中创建,如果需要,将其移动
另请参见看起来与
相反,make
cmake
不展开tilde,因此它将is视为路径的一部分。要使其按预期工作,请使用cc_args.py
脚本的绝对路径,或在命令中进行两个简单更改:
$HOME
CXX="$HOME/.vim/bin/cc_args.py g++" cmake ..
它应该会起作用。以下是对我有效的方法
sudo chmod a+x $HOME/.vim/bin/cc_args.py
CXX="$HOME/.vim/bin/cc_args.py g++" sudo cmake ..
sudo make
然后ls-a显示我的.clang_完整文件,但仍然有效。使用
$HOME/.vim/bin/cc_args.py
而不是~/.vim/bin/cc_args.py
,这一点很重要,因为~
在引用时可能无法展开
另外,使用以下命令验证python脚本的存在:
$ ls -l $HOME/.vim/bin/cc_args.py
-rwxr-xr-x 1 myself staff 2270 Sep 19 16:11 /home/myself/.vim/bin/cc_args.py
如果未找到,请根据需要调整python脚本路径
在构建目录中运行makeclean
正如@xaizek所建议的,以空的生成目录开始(假设生成目录是源目录的子目录):
其次是:
make
此时,make将构建项目,但调用cc_args.py
(将调用g++
),而不是直接调用g++
但是,对于我来说,这个部分无法工作,并且在构建目录或其他任何地方都没有创建.clangu complete
文件
事实上,在生成的CMakeCache.txt/Makefile中没有出现“cc_args”,因此我怀疑CXX
不是传递给cmake的正确变量名
完成后,将
.clang_complete
复制到父目录。是否为制作…
打字错误?您需要运行CC=gcc CXX=g++cmake/path/to/src
。这些python脚本~/.vim/bin/cc_args.py
中有什么内容?cc_args包装对cc-CXX变量指向的编译器的调用。它处理每个调用并将任何外部dedencies输出到名为.clangu_complete的配置文件,这样当clangu_complete正在查找某个外部库的源文件等时,它就知道在哪里查找“在环境变量CXX:~/.vim/bin/cc_args.py clang++中找不到编译器集。听起来您的cc_args.py不在~/.vim/bin/cc_args.py
中。。。pepe@ppp:~/.vim/bin$ls-l总计12-rwxrwxrw-1 pepe pepe 1816年1月26日01:15 cc_args.pyI刚刚在OS X 10.9.5上用cmake 3.0.2尝试了这个方法,并且必须提供完整的用户路径$HOME已正确设置,但似乎未设置expanded@thisisdog,这取决于您使用的外壳CXX=~/…
可能会起作用,CXX=“$HOME/…”
在bash中工作得很好。请看我的答案,我尝试按照你的建议,但可能CXX
不是正确的变量(至少对我来说是这样),因为cmake中没有任何与“cc_args”相关的东西……cmake的不足之处无处不在。。。看看他们的。如果从以前的版本中保留了cmakcache.txt
,或者$CXX
将不受尊重,则您需要自己删除它。我没有看到通过-D
参数指定带参数的编译器命令的文档化方法。。。。(这似乎可以通过-DCMAKE\u CXX\u COMPILER=“…/cc\u args.py”-DCMAKE\u CXX\u COMPILER\u ARG1=g++
实现)。
CXX="$HOME/.vim/bin/cc_args.py g++" cmake ..
sudo chmod a+x $HOME/.vim/bin/cc_args.py
CXX="$HOME/.vim/bin/cc_args.py g++" sudo cmake ..
sudo make
$ ls -l $HOME/.vim/bin/cc_args.py
-rwxr-xr-x 1 myself staff 2270 Sep 19 16:11 /home/myself/.vim/bin/cc_args.py
CXX="$HOME/.vim/bin/cc_args.py g++" cmake ..
make