我的项目结构如下:
├── Makefile
├── data
├── src
│ ├── ...other code
│ └── main.cpp
└── bin
└── out
该程序将查看父目录并打开放置在其中的文件,打开文件的代码如下所示:
f.open("../data");
它将使用以下代码在
bin
(二进制文件所在的地方)中生成一些临时文件:f.open("temp");
我的makefile看起来像这样:
SOURCES=src/main.cpp src/foo.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=bin/out
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(OBJECTS) -o $@
.cpp.o:
$(CC) $(CFLAGS) $< -o $@
clean:
rm src/*.o $(EXECUTABLE)
test:
bin/out arg1 arg2
load:
bin/out arg1 arg2
.PHONY: test load
现在,我可以从父目录中使用
make
,然后进入bin
,执行程序。但是,如果我只是从父目录运行data
或make load
,则该程序无法在父目录中打开make test
。 最佳答案
您可以将cd
放在make
配方命令上:
test:
cd bin; ./out arg1 arg2
不要忘记在执行的同一行中添加
cd
关于c++ - 执行程序,从C++的父目录中打开父目录中的文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23421121/