Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 执行一个程序,从C+中的父目录打开父目录中的文件+;_C++_Makefile - Fatal编程技术网

C++ 执行一个程序,从C+中的父目录打开父目录中的文件+;

C++ 执行一个程序,从C+中的父目录打开父目录中的文件+;,c++,makefile,C++,Makefile,我的项目结构如下所示: ├── Makefile ├── data ├── src │   ├── ...other code │   └── main.cpp └── bin └── out f.open("temp"); SOURCES=src/main.cpp src/foo.cpp OBJECTS=$(SOURCES:.cpp=.o) EXECUTABLE=bin/out all: $(SOURCES) $(EXECUTABLE) $(EXECUTABLE): $(OB

我的项目结构如下所示:

├── Makefile
├── data
├── src
│   ├── ...other code
│   └── main.cpp
└── bin
    └── out
f.open("temp");
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
程序将查看父目录并打开其中的文件,打开文件的代码如下所示:

f.open("../data");
它将在
bin
(二进制文件所在的位置)中生成一些临时文件,代码如下:

├── Makefile
├── data
├── src
│   ├── ...other code
│   └── main.cpp
└── bin
    └── out
f.open("temp");
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
我的makefile如下所示:

├── Makefile
├── data
├── src
│   ├── ...other code
│   └── main.cpp
└── bin
    └── out
f.open("temp");
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
SOURCES=src/main.cpp src/foo.cpp
对象=$(源:.cpp=.o)
可执行文件=bin/out
全部:$(源)$(可执行)
$(可执行文件):$(对象)
$(CC)$(对象)-o$@
.cpp.o:
$(CC)$(CFLAGS)$<-o$@
清洁:
rm src/*.o$(可执行)
测试:
存储箱/输出arg1 arg2
负载:
存储箱/输出arg1 arg2
.虚假:测试负载

现在,我可以从父目录
make
,然后进入
bin
,执行程序。但是如果我只是从父目录运行
makeload
maketest
,程序无法打开父目录中的
数据。

您可以将
cd
放在
make
配方命令上:

test:
     cd bin; ./out arg1 arg2
不要忘了在执行的同一行中使用
cd