【发布时间】:2019-10-02 11:46:36
【问题描述】:
我正在使用 CMake 和工具链文件交叉编译 C 库。我的工具链文件将CMAKE_SYSROOT 设置为适当的值,因此编译工作没有问题。但是在安装的时候,库并没有安装到CMAKE_SYSROOT指向的目录。我可以通过运行make install DESTDIR=xxx 来实现这种效果。
我知道这里有两个不同的概念:
- 交叉编译工具链,由可在我的本地架构上运行的二进制文件组成
-
CMAKE_SYSROOT是目标架构文件系统的根目录,包含头文件和库,传递给例如gcc 通过--sysroot标志。
我有两个问题:
将我的交叉编译工具链所在的 sysroot 与将安装我的所有交叉编译库的 sysroot 合并是个好主意吗?我觉得它应该是一样的,但我不确定,对于 CMake 来说,它们似乎是不同的概念。 更新:回答在下面的 cmets 中,这些确实是不同的概念。
像上面描述的那样交叉编译时指定安装目录的现代 CMake 方法是什么? 更新:我认为这应该与
CMAKE_SYSROOT相同,并且我认为 CMake 应该提供一种仅在某处定义一次的方法。
谢谢!
【问题讨论】:
-
通常,您希望将交叉编译的二进制文件安装到为此目的指定的位置——可能但不一定是交叉目标的文件系统映像。您的交叉工具链由 local-system 二进制文件组成,因此不清楚为什么您认为它们的交叉二进制输出与它们本身属于同一位置。
-
当然,这是我所缺少的。谢谢。这回答了我的第一个问题。
-
想一想,我的第二个现在也很清楚了。再次感谢。
-
对不起,其实第二个子弹还不清楚。我更新了我的问题。
标签: cmake cross-platform