cmake 交叉编译有大佬懂吗?

cohen121 · 2024-10-1 16:46:56 · 113 次点击
c++新手,之前写 java 和 go 的。目前使用 cmake + vcpkg 在 Linux 开发。我现在想在在 Linux 环境生产 Windows/mac/linux 等操作系统下的可执行文件。可以完成吗?
现在只考虑最简单一个程序 hello world, 没有第三方依赖。如何操作。。。
举报· 113 次点击
登录 注册 站外分享
14 条回复  
wnpllrzodiac 小成 2024-10-1 22:40:49
zig 好像还这个可以。不过估计问题还是有,没有原生的好用。win ,mac 最好还是在原生的上面编译。linux 倒是可以用 docker 。总之 linux 的各种架构都可以在 docker 里交叉编译。
wkla 小成 2024-10-1 22:25:14
可以试试 github cmake action ,有个 cmake-multi-platform.yml 的跨平台编译。然后在 ci 里获取编译产物。https://github.com/actions/starter-workflows/blob/main/ci/cmake-multi-platform.yml
tuiL2 小成 2024-10-1 22:01:22
cmake 只是个辅助编译的工具。你真正需要解决的是编译器的问题
xinge666 小成 2024-10-1 21:01:18
Go 可以直接交叉编译,C++的话得有对应的工具链,比如编译 win 下就用 mingw ,macOS 就没办法了。如果上 GitHub 的话,可以直接用 Action 编译多平台的二进制。
ai277014717 小成 2024-10-1 20:59:35
hello world 依赖 libc 所以你做要的就是在 linux 下找到所有平台的 libc 就行了。
coderluan 初学 2024-10-1 20:55:06
可以但是不推荐,因为没有办法同时交叉编译 Linux 和 Mac 平台的方案,也就是你得用两套,Windows 用 mingw ,Linux 用 zig ,然后出了问题新手大概率是解决不了的,真心不如用 cmake+clang 三个平台分别编译。
jinliming2 小成 2024-10-1 20:50:46
写过 Go 的话,Go 本身不就是可以直接跨平台编译吗?甚至简单到只要指定个环境变量就行了。但仅限于纯 Go 代码,没有 C 依赖的。
yaott2020 小成 2024-10-1 19:37:00
楼主要不要试试看 Rust (勾引
tool2dx 初学 2024-10-1 19:23:41
完不成,mac 我都是用 ssh 编译的,就算这样还是很难。

安卓倒是容易,那是因为 google 有跨平台的工具链,而苹果没有。
0o0O0o0O0o 小成 2024-10-1 19:05:22
hello world 那就用 #2 说的
https://andrewkelley.me/post/zig-cc-powerful-drop-in-replacement-gcc-clang.html
12下一页
返回顶部