将交叉编译目标添加到现有CMake项目中,而无需使用ExternalProject_Add

时间:2020-05-03 14:10:15

标签: c++ c cmake

好,所以我有一个现有的项目,该项目可以编译代码,创建可执行文件,并且一切正常(在Linux和Windows上)。

现在...我想向我的项目中添加另一个可执行文件,但是不同之处在于,我想交叉编译该可执行文件。我们正在使用Clang进行所有操作,因此我们可以将--target作为此新目标的编译器标志传递,并且可以正常工作(即代码针对我想要的目标进行编译)。

问题出在链接器上。当我在Windows上时,事情变得很丑陋,因为目标是x86_64-elf,因此link.exe显然不能使用它。如果我们传入-fuse-ld = lld,它将被忽略,因为CMake已将其设置为link.exe。 CMake还添加了一堆Windows特定的垃圾库,例如库,似乎没有办法关闭这些东西。

有没有一种方法可以添加目标并为其提供特定的工具链,或者使用CMake进行类似的操作,而无需使用ExternalProject_Add支持交叉编译特定目标。这是我们之前所做的方式,并且效果很好,但是这种方法有很多缺点。想通了,我会问。

1 个答案:

答案 0 :(得分:0)

您应该考虑将ninja与cmake和clang一起用作构建系统。 This可能会有帮助。

相关问题