Nic*_*ick 8 c c++ gcc makefile
有可能指示g ++以递归方式搜索头文件的文件夹吗?在我的例子中,我想要g ++来搜索
/ ARDrone_SDK_2_0_1/ARDroneLib /柔和/
以及头文件的所有子目录.可以这样做吗?这是一个简单的Makefile
例子:
C=g++
CFLAGS=-c -Wall
LDFLAGS=
INC1=/ARDrone_SDK_2_0_1/ARDroneLib/Soft/ <- can this be recursive?
INCDIRS= -I${INC1}
SOURCES=src/dronevid.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=build/dronevid
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o $@
.cpp.o:
$(CC) $(CFLAGS) $(INCDIRS) $< -o $@
Run Code Online (Sandbox Code Playgroud)
Mad*_*ist 10
现在的问题是有点混乱,因为你混为一谈两种不同的工具,make
和g++
.
无法g++
搜索给定目录的所有子目录.必须在命令行上使用-I
标志单独指定要用于查找包含文件的每个目录.
如果您愿意,您可以make
构建这些参数并将它们放在命令行中.假设您使用的是GNU make,以及支持该find
命令的类UNIX系统,您可以执行以下操作:
INCDIRS := $(addprefix -I,$(shell find /ARDrone_SDK_2_0_1/ARDroneLib/Soft -type d -print))
Run Code Online (Sandbox Code Playgroud)
我应该先说一下,这不是一个好主意.您不知道这些目录将显示在哪个顺序中,并且您不知道在不同目录中是否存在可能导致问题的相同头文件的多个副本.
通常,子目录中的头文件的工作方式是将顶级目录添加到编译行,然后#include
在代码中的行中使用相对路径.就像是:
#include <subdir/subsubdir/header.h>
Run Code Online (Sandbox Code Playgroud)
然后加:
-I/top/level/dir
Run Code Online (Sandbox Code Playgroud)
到g++
编译行.
归档时间: |
|
查看次数: |
9404 次 |
最近记录: |