【发布时间】:2020-08-17 21:53:48
【问题描述】:
好的,所以我有一个现有的项目,它可以编译代码、创建可执行文件,并且一切正常(在 Linux 和 Windows 上)。
现在...我想在我的项目中添加另一个可执行文件,但不同的是,我想交叉编译那个可执行文件。我们对所有东西都使用 Clang,所以我们可以传递一个 --target 作为这个新目标的编译器标志,它可以工作(即,代码为我想要的目标编译)。
问题出在链接器上。当我在 Windows 上时,事情变得很丑,因为目标是 x86_64-elf,所以显然 link.exe 不能使用它。如果我们传入 -fuse-ld=lld,它会被忽略,因为 CMake 已经将它设置为 link.exe。 CMake 还添加了一堆 Windows 特定的垃圾类库,似乎没有办法关闭这些东西。
有没有办法添加一个目标并为其提供特定的工具链,或者使用 CMake 提供类似的东西,而无需使用 ExternalProject_Add 来支持交叉编译特定目标。这就是我们之前的做法,效果很好,但是这种方法有很多缺点。想我会问。
【问题讨论】: