【发布时间】:2013-07-27 23:18:02
【问题描述】:
我目前正在开发一个 C++ 命令行实用程序,以作为开源实用程序在 Github 上分发。但是,我希望下载该程序的人能够以尽可能少的步骤在任何平台(特别是 Mac、Linux 和 Windows)上轻松编译和运行该程序。假设只需对代码进行少量更改以使其与各种独立于平台的 C++ 编译器(g++ 和 win32)兼容,我该怎么做? makefile 是否相关?
【问题讨论】:
-
我知道那里有很多构建系统,由于广泛的支持,我仍然喜欢 CMake。如果您仍然使用 QT,那么 qmake 似乎是有意义的。我在预制方面也有一些很好的经验。最后,您可以自行决定喜欢哪种工具。那里有很多,如果您觉得您当前的工具不适合它,您可以随时查看Wikipedia list。
-
代码的哪些部分可能依赖于平台?图形?文件路径?图书馆?
-
文件路径是肯定的。它是一个命令行实用程序,因此图形不是问题。至于库,这些是我的包含语句:
#include <iostream> #include <fstream> #include <libgen.h> #include <string> #include <regex> using namespace std; -
要扩展 @PeterT 的评论,您可以查看元构建系统,如 CMake 和 Premake。这个想法是编写和维护一个构建脚本,而不管目标平台如何。然后,您可以使用该构建脚本生成目标特定的 makefile 或项目文件,然后将其提供给构建工具。
-
@DanielH。他们需要 premake 本身,因为没有它构建脚本就无法工作。就像没有 make 工具,makefile 自己不会做任何事情。最后我检查了一下,虽然 premake 并没有那么大,所以为了方便起见,你可能可以将它包含在你的项目中。
标签: c++ cross-platform