clang_complete - cc_args.py не будет генерировать файл.clang_complete

Я настроил простой проект для проверки жизнеспособности VIM как компилятора C++ плюс простой make-файл из учебника, но я не могу сгенерировать файл.clang_complete из сценария cc_args.py.

Readme говорит, что я должен бежать:

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

Но он не будет генерировать файл.clang_complete из make-файла.

Вот мой простой проект.

//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

Makefile:

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.

1 ответ

Решение

Ваш Makefile игнорирует CC а также CXX переменные среды и просто использует g++ непосредственно. Измените правило приветствия на

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

А потом make CXX='.vim/bundle/clang_complete/bin/cc_args.py g++' -B должно сработать.

%.o: %.cpp $(DEPS) правило использует CC, но это правило никогда не используется, так как ваш OBJS переменные все .cpp и не .o переменные.

Другие вопросы по тегам