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

时间:2014-12-08 02:26:35

标签: c++ linux netbeans makefile cross-platform

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

我对互联网的研究使我得出结论,应该为Windows操作系统创建一个makefile。通常,在创建C ++项目时,Netbeans建议我们为我们创建一个makefile。它很棒,但它只适用于Linux。

我坚持Makefile创建(从未在手动之前完成),所以这些是我为Windows创建makefile的步骤:

  1. 右键单击项目 - >新 - > Makefile
  2. 文件名:“Makefile-Windows” - >下一步
  3. 编译器:GNU编译器,平台:Windows - >下一步
  4. 基本目录:项目目录 - >下一步
  5. 目标名称:hello-world(“可执行”单选按钮) - >添加 - >下一步
  6. 所有已创建文件的目录:GNU-amd64-Windows - >下一步
  7. 输入源文件:main.cpp - >下一步
  8. 搜索包含文件的目录:左空 - >下一步
  9. 选择要链接的库:无,链接模式:动态链接 - >下一步
  10. 要链接的库:左空 - >下一步
  11. 您希望如何构建代码?:Dev。模式 - >下一步
  12. ,13。编译器选项:左默认 - >完成
  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;
    }
    

    如果我选择了错误的方法,那该怎么做?

1 个答案:

答案 0 :(得分:2)

正如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. 最后,制作此makefile后,我们的输出文件在Windows平台上变为可执行文件。