比如我有xxx.h,xxx.cc,xxx.o,main.cc,.cc都include了xxx.h。
当执行g++ main.cc -o main时,g++自动将xxx.cc编译并与main.cc编译成的目标文件链接,或自动将xxx.o与main.cc编译成的目标文件链接。
1
mozartgho 2015-07-20 17:21:14 +08:00
gcc没那么智能,它只是一个编译器,从严谨角度讲,它是需要严格的输入的;你需要automake
|
3
jdlau 2015-07-20 17:45:33 +08:00
写个makefile应该可以
|
4
xylophone21 2015-07-20 18:24:32 +08:00
你希望仅在当前目录下找xxx.cc呢?
还是在你指定的几个目录下找xxx.cc呢? 还是在系统中找xxx.cc呢? 还是系统在互联网上找xxx.cc呢? 你是希望找当前平台的还是交叉编译环境的呢? 这么多问题,总结起来就是说由于需求不明确,这个功能不可能放到gcc里。实际情况是这些信息会放到makefile里,它们是项目强相关的。 #pragma comment lib在gcc里对应的方法是在链接时-lxxx,它实际上指定了xxx.c编译成了libxxx库,也不是自动的, |
5
linux40 OP @xylophone21 在系统中找,或指定的目录找。还有,关于可能自动这个词有误会,意思就是在include了某个头文件后也吧需要的文件链接了,就是让自己写的库使用起来跟标准库一样。。。
|
6
zhjits 2015-07-20 18:44:39 +08:00
autoconf, automake
|
7
xylophone21 2015-07-20 19:09:02 +08:00
@linux40
举例来说, 你有一个foo.h,但其对应的库不一定是foo.so啊,找的原则是什么呢? OO一下,你有一个foo.h,但是实现可能有多个,找哪个呢? 交叉一下,你有一个foo.h,在多个平台上都有库(arm,mipse等),找哪个呢? 另外,标准库也不能只引头文件,不指定链接的,需要-lc的。 |
8
linux40 OP |
9
xylophone21 2015-07-21 09:31:17 +08:00
|
10
linux40 OP |