【问题标题】:Add a cross-compile target to existing CMake project without using ExternalProject_Add在不使用 ExternalProject_Add 的情况下将交叉编译目标添加到现有 CMake 项目
【发布时间】: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 来支持交叉编译特定目标。这就是我们之前的做法,效果很好,但是这种方法有很多缺点。想我会问。

【问题讨论】:

    标签: c++ c cmake


    【解决方案1】:

    您应该考虑将 ninja 与 cmake 和 clang 结合使用作为构建系统。 This 可能会有所帮助。

    【讨论】:

    • 我们有。 Ninja 对这里提出的问题并没有真正的帮助。
    猜你喜欢
    • 2015-08-04
    • 1970-01-01
    • 2015-01-10
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 2013-07-30
    相关资源
    最近更新 更多