我有几个来自不同目录的目标文件(它们存储在生成它们的相应源附近)。有没有给出这个目录结构的方法
根
main.o
根/ Some_long_path
object_1.o
object_2.o
我可以运行这样的命令
g++ -Wall main.o -ISome_long_path object_1.o object_2.o -o app
因此,我不必将完整路径放在每个目标文件的前面。什么会取代-I命令?
我正在使用gcc版本4.8.3(来自Cygwin安装)。
答案 0 :(得分:2)
因此,我不必将完整路径放在每个目标文件的前面。什么会取而代之的是
-I
命令?
没有像-I
这样的gcc选项将一些目录添加到对象"搜索路径",并且没有对象的搜索路径。但是存在库的搜索路径(通常在静态库中为lib*.a
,在Unix世界中为共享库命名为lib*.so
。
gcc的目录选项手册仅列出包含路径的-I
选项和库路径的-L
选项。没有对象路径:
https://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html#Directory-Options
gcc的链接选项手册仅提及-L
选项(-l
描述附近):
https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#Link-Options
你能用什么:
OBJ_DIR=./path/to/dir
然后g++ ... $OBJ_DIR/obj1.o $OBJ_DIR/obj2.o
)libSome_Long_Component_Name.a
(这种类型的库就像几个*.o
目标文件的存档和{{1}的一些额外信息});然后你可以使用ar rcs
g++ ... -Ldir/ -lSome_Long_Component_Name
和make实用程序的一些变体(gnu make for linux和cygwin,nmake for windows&#MS; MSVC;你可以从gnu make manual:http://www.gnu.org/software/make/manual/make.html#Simple-Makefile然后" 2.4变量使Makefile变得更简单"然后" 4.3先决条件的类型" - 用Makefile
命令的例子来查询某些objdir中的查找对象。还有VPATH special variable指示make搜索多个目录中的源和对象;但项目中的所有对象应具有不同的名称)。