GCC可以忽略不存在的目录吗?

GCC可以忽略不存在的目录吗?,gcc,linker,g++,Gcc,Linker,G++,我有两个项目:mylib和myproj mylib编译成一个共享对象。 myproj使用mylib。 我使用以下链接myproj: g++ -L../../mylib/Release myproj.o -lmylib 这在我的开发机器上运行良好 在另一台机器上,mylib.so位于/usr/local/lib中。因此,不需要-L。 它在没有-L的情况下编译得很好 但是,一旦我用相同的命令(用-L)编译它,它就会用 g++:错误:../../mylib/Release:没有这样的文件或目录 我希

我有两个项目:mylib和myproj mylib编译成一个共享对象。 myproj使用mylib。 我使用以下链接myproj:

g++ -L../../mylib/Release myproj.o -lmylib
这在我的开发机器上运行良好

在另一台机器上,mylib.so位于/usr/local/lib中。因此,不需要-L。 它在没有-L的情况下编译得很好

但是,一旦我用相同的命令(用-L)编译它,它就会用

g++:错误:../../mylib/Release:没有这样的文件或目录

我希望myproj使用相同的命令在两台机器上编译。 有没有办法让它忽略不存在的目录


它似乎并不关心完整路径是否不存在,它只抱怨相对路径。

您希望尽可能多地使用makefile,因为它们使事情变得更简单。在定义的Makefile中,可以首先检查目录。可能是这样的:

all: 
   if [ -d "mylib" ]; then 
       g++ -L../../mylib/Release myproj.o -lmylib
   else
       g++  myproj.o -lmylib
   fi

当然,您可以使用CC等变量。这只是一个基本示例

在Makefile中,配方的每一行都在其自己的子shell中单独执行。如果要使用多行shell comnand,则需要使用`\`行延续将comnand转换为一个逻辑行。在另一台计算机上使用的是哪个g++版本?我试着以这个命令为例:
g++-L.././foo/bar main.o-lpthread
,即使foo/bar目录不存在,它也会链接无误