【发布时间】:2019-11-11 08:57:41
【问题描述】:
使用带有项目文件夹的文件夹结构的简单场景,在这个根目录中有一个构建和一个源文件夹:
project
- build
- sources
在源文件夹中有 hello.cpp:
#include <iostream>
using namespace std;
int main() {
cout << "Hello world!\n";
}
还有一个 Makefile:
SOURCE_DIRECTORIES = ../ch1
vpath %.cpp $(SOURCE_DIRECTORIES)
hello: hello.cpp
g++ ${SOURCE_DIRECTORIES}/hello.cpp -o hello
我从构建文件夹这样运行:
make -f ../sources/Makefile
上述方法有效,但 vpath 不是那么有用。即使使用 vpath,我也必须在命令行中添加 SOURCE_DIRECTORIES 路径。我还不如不使用 vpath,只在需要的地方使用 $(SOURCE_DIRECTORIES)。
这也有点脆弱,因为构建文件夹必须与源文件夹处于同一级别。但我可以忍受。
这是最好的方法吗?我在想一定有更好的方法来做到这一点。
【问题讨论】:
-
你可以使用cmake!!