如何创建一个 C++ 单一构建作业,该作业将生成在 Windows 上工作的 .dll 和准备在 Unix 上工作的 .so?
假设我们的开发环境是基于Windows的。
如何创建一个 C++ 单一构建作业,该作业将生成在 Windows 上工作的 .dll 和准备在 Unix 上工作的 .so?
假设我们的开发环境是基于Windows的。
在 Unix 或 Linux 上,您的共享库需要链接到系统库,例如/lib64/libc.so.6
和/lib64/ld-linux-x86-64.so.2
. 如果这是您所要求的,则无法在 Windows 上链接这些(除非您在 Windows 上部署了 Linux 交叉编译工具链,如果存在的话)。您需要在目标操作系统上编译它。
我会给你一些简单的解决方案。请仅将其视为一个想法。我从来没有这样做过。但我认为从逻辑上讲这应该是可能的。
注意:您可以选择在 Linux 环境下工作,并且可以在上面安装 virtual-box 和 windows top。
这些东西可以帮助你 http://geekery.amhill.net/2010/01/27/virtualbox-with-existing-windows-partition/ http://www.giannisakiris.com/index.php/2008/04/09 /virtualbox-access-windows-host-shared-folders-from-ubuntu-guest/
使用 minGW 并为 linux 和 windows 准备代码
可能是 Cygwin 环境允许一些交叉编译技巧:Cygwin 的 Cross compile for linux
我自己没有对此进行测试,但可以想象一些构建过程,例如 MinGw 以构建 Windows .dll 和 Cygwin 以及用于 .so 的交叉编译工具......
结果可能是(取决于您的实际用例)只需使用 VM 在 Linux/Unix 系统上编译并共享用于编译的纯源代码(例如,使用 CMake + GCC + MinGw [仅适用于 Windows] 作为统一构建环境,甚至从 linux 系统交叉编译 Windows .dll)为您提供更好的服务。
是的,CMake 可以做到这一点:) 你需要培养编写体面的 cmake 规则的技能,但是当你掌握它时,你可以使用一个小的构建命令轻松地交叉构建。另外,我建议您将 Jenkins 与您的 CMake 一起使用,这可以与 CTest 和 CPack 链接,您将拥有一个很棒的开发地牢:)
必须对源代码进行返工。另外如果使用MinGW,我们可以最大限度地减少返工。但是如果我们使用微软编译器,返工更多,必须使用单独的make文件。