Cmake .clang_完成并制作?

Cmake .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) |

我正在使用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)
 |
 |_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