gpt4 book ai didi

c++ - Boost-Build:从 Linux 构建 Windows 可执行文件

转载 作者:太空狗 更新时间:2023-10-29 23:09:17 26 4
gpt4 key购买 nike

我有一个 C++ 代码库,我需要构建它的 Windows 和 Unix 版本。重要的是 Windows 可执行文件在没有安装 cygwin 或类似软件的情况下工作。哦,我正在尝试从 ubuntu 实现这一目标。

我一直在努力弄清楚如何让 boost-build 处理它,但到目前为止还不够。为简单起见,假设这个项目结构:

root/
|- src/
| |- core/
| | |- number.cpp
| | |- number.hpp
| |- main.cpp
|- jamroot

为了让 boost-build 生成 Windows 二进制文件作为第一步,我在我的主目录中创建了一个包含以下内容的 user-config.jam 文件:

using gcc : 4.4 : i586-mingw32msvc-g++ : <rc>i586-mingw32msvc-windres <archiver>i586-mingw32msvc-ar ;

我的 jamroot 文件如下所示:

exe hello :
[ glob-tree *.cpp ]
: : <target-os>windows
;

但是当我运行 bjam 时,我得到了一个 unix 可执行文件(没有扩展名)而不是一个 windows 可执行文件。使用 .exe 扩展名重命名应用程序并在 Windows 上运行不起作用。我为 bjam 尝试了各种选项,例如 bjam --toolset=gcc --target-os=windowsbjam --toolset=gcc-mingw --target-os=windows 等等,但注意似乎有效..

郑重声明,mingw 已正确安装并正常工作。手动调用编译器会生成正确的输出文件。

有什么想法吗?

此外,如何让 bjam 为我的 user-config.jam 文件中列出的每个工具集构建一个版本?

奖金问题:最后,我需要链接一个增强库和一个自定义预构建库。我将如何为不同的目标系统指定不同的库?

更新 我从 http://mingw-cross-env.nongnu.org/ 下载了脚本这让我可以一次性编译 mingw 和 boost 库,这样问题就解决了。这次).. 其他的问题还是没有解决。

最佳答案

不幸的是,我不认为这是可以做到的(我已经失败了很多次),我认为原因是因为不支持 mingw 来编译 Boost。人们似乎完成此任务的唯一方法是使用 MS Visual Studio 在 win32 下维护一个单独的构建环境。

根据您的问题,不清楚您是在使用 bjam 构建您的应用程序,还是只是尝试构建 Windows 版本的 Boost 库(.lib 或 .dll 文件)以稍后与您的应用程序链接。在我的尝试中,我尝试以“常规”方式执行此操作,即编译 Boost 库的 Windows 版本,然后使用 mingw32 单独编译应用程序并与 Boost 链接。

不幸的是,到目前为止我的绊脚石是我只能得到两个结果——要么在将 Boost 编译成 Win32 动态库 (.dll) 时构建失败,要么成功构建 win32 静态库,但随后 libtool refuses to link them in with the app .

看看 PKGBUILD Arch Linux 用来编译 mingw32-boost 的文件,因为您可能会从他们的工作方式中得到一些提示。看来 bjam threadapi=win32 target-os=windows 就够了。不要忘记正确设置您的前缀,这样您就不会用 win32 版本覆盖您的 native 库!

关于c++ - Boost-Build:从 Linux 构建 Windows 可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5758045/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com