我有一个 C++ 代码库,需要构建 Windows 和 Unix 版本。重要的是,Windows 可执行文件可以在没有安装 Cygwin 或类似软件的情况下运行。哦,我正在尝试从 Ubuntu 实现这一目标。
我一直在努力想弄清如何让 Boost-Build 处理它,但到目前为止还没有成功。为简单起见,假设这是项目结构:
为了让boost-build首先生成Windows二进制文件,我在我的主目录下创建了一个名为user-config.jam的文件,并包含以下内容:
我的 jamroot 文件长这样:
但当我运行
值得一提的是,mingw 已经正确安装并工作正常。手动调用编译器可以产生正确的输出文件。
有什么想法吗?
另外,我怎样才能让 bjam 构建我在 user-config.jam 文件中列出的每个工具集的版本?
额外问题: 最终,我需要链接一个 boost 库和一个自定义预构建库。我该如何为不同的目标系统指定不同的库?
我一直在努力想弄清如何让 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编译器(我现在在另一台电脑上,无法提供解决方案)。其他问题仍未解决。