C++在不同的平台上编译

C++ Compile on different platforms

本文关键字:平台 编译 C++      更新时间:2023-10-16

我目前正在开发一个C++命令行实用程序,作为Github上的开源实用程序分发。然而,我希望下载该程序的人能够在任何平台(特别是Mac、Linux和Windows)上以尽可能少的步骤轻松编译和运行该程序。假设只需要对代码进行微小的更改,就可以使其与各种独立于平台的C++编译器(g++和win32)兼容,我该如何做到这一点?makefile是否相关?

我的建议是,不要使用make文件,为足够大的项目维护文件是乏味的,有时会发生错误,你不会立即发现(因为*.o文件仍然存在)。

请在此处查看此问题

Makefile确实具有高度相关性。您可能会发现,您需要(至少)两个不同的makefile来弥补编译器不同的事实。

很难具体说明如何解决这个问题,因为这取决于项目的复杂程度。编写脚本/批处理文件可能最简单,只需记录"在Linux/Unix上使用build.sh命令,在Windows上使用build.bat命令"),然后让相应的文件处理,例如设置编译器的名称和标志等。

或者,您可以在makefile中包含一个include,这是由体系结构决定的。或者不同的makefile。

如果这个项目真的很简单,它可能只需要提供一个基本的makefile就足够了,但这不太可能了,因为在Linux/MacOS上编译x.cpp会产生一个名为x.o的对象文件,在windows上,对象文件名为x.obj。库有不同的名称,dll有不同的名字,在Linux/McOS上,最终的可执行文件没有扩展名(通常),所以它被称为"myprog",其中windows下的可执行文件被称为"myprog.exe"。

这些差异意味着makefile需要有所不同。