Automake:每个目标编译器

时间:2014-09-22 10:42:25

标签: compilation autoconf automake

我正在使用自定义编译链,我有多个需要编译的目标,但是需要使用不同的cxx编译器进行编译。使用automake可以吗?似乎不可能做这样的事情:

target_CXX = ...

理想情况下,我想要的是:

target1_SOURCES = ...
target2_SOURCES = ...

target1_CXX = ...
target1_CXXFLAGS = ..

target2_CXX = ...
targer2_CXXFLAGS = ...

甚至更好,让target1使用正常的CXX标志使用定义的target1_CXX和target2。

Target1应该是一个noinst,并且只生成目标文件。然后应在target2(使用LDADD定义)中使用这些目标文件来生成完整的二进制文件。

谢谢!

1 个答案:

答案 0 :(得分:1)

您所描述的内容可以通过autotools完成,但不容易。默认情况下,autotools仅使用一个工具链(主机工具链,例如CCCXX等)。也可以使用build toolchain

在这种情况下,您将要做的事情与AX_PROG_CXX_FOR_BUILD(上面引用的构建工具链宏及其相关宏)的作用非常相似。基本上,它使用一组不同的输出变量生成所有C ++编译器测试的另一个副本。

然后像:

$(target1_OBJECTS) := $(target1_SOURCES:.cc=.o)
$(target1_OBJECTS) : CXX = $(CXX_FOR_BUILD)
$(target1_OBJECTS) : CXXFLAGS = $(target1_CXXFLAGS)
$(target1_OBJECTS) : CPPFLAGS = $(CPPFLAGS_FOR_BUILD)

...

target2_LDADD = $(target1_OBJECTS)

可能会将它们链接在一起。