【问题标题】:clang_complete - cc_args.py won't generate .clang_complete fileclang_complete - cc_args.py 不会生成 .clang_complete 文件
【发布时间】:2012-11-09 04:39:40
【问题描述】:

我已经设置了一个简单的项目来测试 VIM 作为 C++ 编译器的可行性以及教程中的一个简单的 makefile,但我似乎无法从 cc_args.py 脚本生成 .clang_complete 文件。

自述文件说我应该运行:

make CC='~/.vim/bin/cc_args.py gcc' CXX='~/.vim/bin/cc_args.py g++' -B

但它不会从 makefile 生成 .clang_complete 文件。

这是我的简单项目。

//hello.cpp
#include "hello.h"

int main(void)
{
    hello();
    return 0;
}

//hello_fn.cpp
#include <iostream>
#include "hello.h"

void hello()
{
    std::cout << "Hello world!";
}

//hello.h
#ifndef HELLO_H
#define HELLO_H
void hello();
#endif

生成文件:

CC=g++
CFLAGS=-Ihead
DEPS = hello.h
OBJ = hello.cpp hello_fn.cpp

%.o: %.cpp $(DEPS)
    $(CC) -c -o $@ $< $(CFLAGS)

hello: $(OBJ)
    g++ -o $@ $^ $(CFLAGS)

hello.h 在名为 head 的目录中。

跑步:

make CC='.vim/bundle/clang_complete/bin/cc_args.py gcc' CXX='.vim/bundle/clang_complete/bin/cc_args.py g++' -B

或:

make CXX='.vim/bundle/clang_complete/bin/cc_args.py g++' -B

不会产生 .clang_complete 文件。

【问题讨论】:

    标签: vim clang clang-complete


    【解决方案1】:

    您的 Makefile 会忽略 CCCXX 环境变量,而直接使用 g++。将 hello 规则更改为

    hello: $(OBJ)
        $(CXX) -o $@ $^ $(CFLAGS)
    

    然后make CXX='.vim/bundle/clang_complete/bin/cc_args.py g++' -B 应该可以工作了。

    %.o: %.cpp $(DEPS) 规则确实使用了CC,但从未使用此规则,因为您的OBJS 变量都是.cpp 而不是.o 变量。

    【讨论】:

    • 如果使用cmake 将不起作用,因为它生成的makefile 不尊重CCCXX
    • @Haroogan cmake 尊重 CCCXX 环境变量。您只需要删除 CMakeCache.txt 文件即可重新创建它。
    • 我当然做到了,您实际上可以检查makefile 的内容并看到gccg++ 调用在那里是硬编码的。
    猜你喜欢
    • 2014-10-02
    • 2014-08-26
    • 2018-01-12
    • 2013-01-12
    • 2013-02-06
    • 1970-01-01
    • 2012-11-26
    • 2012-05-02
    • 1970-01-01
    相关资源
    最近更新 更多