我有一个 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=windows
,bjam --toolset=gcc-mingw --target-os=windows
但注意到似乎有效..
作为记录,mingw 已正确安装并正常工作。手动调用编译器会产生正确的输出文件。
有任何想法吗?
另外,如何让 bjam 为我的 user-config.jam 文件中列出的每个工具集构建一个版本?
额外的问题:最终,我需要链接一个 boost 库和一个自定义的预构建库。我将如何为不同的目标系统指定不同的库?
更新我从http://mingw-cross-env.nongnu.org/下载了脚本,它允许我一次编译一个 mingw 以及 boost 库,所以这个问题得到了解决。我找到了一种方法让 bjam 调用 mingw 编译器(我在另一台计算机上,所以目前无法提供解决方案).. 其他问题仍未解决。