我已经设置了一个简单的项目来测试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文件。
答案 0 :(得分:3)
您的Makefile会忽略CC
和CXX
个环境变量,而只是直接使用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
变量。