如何在Netbeans中创build一个跨平台的C ++应用程序?

在Netbeans 8.0.1中为Linux和Windows操作系统创build一个简单的“Hello world”跨平台C ++应用程序时遇到了一些困难。 我发现几乎没有Windows的说明,没有Linux的说明(我的操作系统是Ubuntu 14.04)。

我对互联网的研究使我得出结论,应该为Windows OS创build一个makefile。 通常,在创build一个C ++项目时,Netbeans会build议我们为我们创build一个makefile。 这很好,但只适用于Linux。

我坚持创buildMakefile(以前从来没有这样做),所以这些是我为Windows创buildmakefile的步骤:

  1. 右键点击Project – > New – > Makefile
  2. 文件名:“Makefile-Windows” – >下一步
  3. 编译器:GNU编译器,平台:Windows – >下一步
  4. 基地目录:项目目录 – >下一步
  5. 目标名称:hello-world(“可执行”单选button) – >添加 – >下一步
  6. 所有创build的文件的目录:GNU-amd64-Windows – >下一步
  7. input源文件:main.cpp – >下一步
  8. search包含文件的目录:留空 – >下一步
  9. select要链接的库:无,链接模式:dynamic链接 – >下一步
  10. 链接的库:留空 – >下一步
  11. 你想如何build立你的代码? 模式 – >下一步
  12. ,13.编译器选项:左默认 – >完成

因此,在我的GNU-amd64-Windows文件夹中生成这个新的烘焙makefile后,会出现一个目标文件(main.o)和一个可执行文件(hello-world),但仍然只能在Linux中执行。 当我尝试在Windows命令行中运行它时,出现错误:

“错误指令或文件名”

以防万一这是我的main.cpp内容:

#include <iostream> int main( int argc, char** argv ) { std::cout << "Hello world" << std::endl; return 0; } 

如果我选错了方法,那该怎么办呢?

正如Borgleader所提到的,只有C ++代码可以跨平台。 这是我的解决方案:

  1. 首先,我们不应该使用Linux GCC编译器来编译Windows应用程序。 这就是为什么我们需要为Linux安装Windows编译器:

     sudo apt-get install mingw32 mingw32-binutils mingw32-runtime 
  2. 其次,在创建makefile时,我们应该指定替代编译器。 使用:

     /usr/bin/i586-mingw32msvc-g++ 

    默认情况下:

     g++ 
  3. 最后,在make makefile之后,我们的输出文件在Windows平台上变为可执行文件。