我正在尝试使用scons
从三个静态库构建可执行文件。但是,即使源文件的后缀为.cc
,但仍选择gcc
来链接最终的可执行文件,而不是g++
。以下SConstruct演示了这个问题。Scons,仅从静态库构建C++可执行文件
lib_a = Library('a.cc')
lib_b = Library('b.cc')
lib_c = Library('c.cc')
Program('prog',[lib_a,lib_b,lib_c])
然后输出以下命令运行。
g++ -o a.o -c a.cc
g++ -o b.o -c b.cc
g++ -o c.o -c c.cc
ar rc liba.a a.o
ranlib liba.a
ar rc libb.a b.o
ranlib libb.a
ar rc libc.a c.o
ranlib libc.a
gcc -o prog liba.a libb.a libc.a
据我了解,在Program
建设者不能从后缀确定这些库是否单独从C
或C++
源文件来了,然后选择C
。我知道我可以通过指定C
代码应该使用g++
而不是gcc
链接来解决这个问题,但这感觉很脏。有什么方法可以告诉scons它应该链接此程序为C++
代码而不是C
?
谢谢。我试图避免需要重新排列的东西,但似乎我无法摆脱它。 – 2014-09-26 18:30:26
不客气......我真的相信下面在SCons中做事的标准途径将长期为您付出代价。 – dirkbaechle 2014-09-26 20:44:30