跨平台C++工具链

7
你好,我正在为跨平台C++开发在我的Windows电脑上组装工具链。我计划使用Boost.Build进行构建和Boost::Test进行单元测试。我将使用Mercurial作为版本控制系统,因为我可以将repo放在我的外部硬盘上,然后将其拉到我的Windows或Linux分区。唯一困扰我的是编辑器、编译器和调试器。有人有什么建议吗?
使用Boost.Build,我可以使用支持的任何编译器轻松构建。这意味着通过使用相同的脚本和标志,在Windows上使用MSVC,在Linux上使用GCC。

你真的会在两个平台上运行IDE吗?我猜这可能对特定于平台的调试有用,但大多数情况下,我认为你会只在一个平台上进行开发(听起来像是Windows),然后编译成两个平台的版本。 - Nate C-K
说实话,在很多情况下,我并不在乎是否使用集成开发环境,因为我发现它们常常妨碍我的工作。但是,使用同一个编辑器会很方便。 - blewisjr
什么平台?如果你只提到了Linux和Windows,那我建议你使用虚拟机而不是双启动系统。这样你就可以使用本地工具并在Windows上运行本地Linux构建(或者反过来)。这样测试会更快更简单。例如,使用VMWare Server的免费版本。 - Clifford
6个回答

8

在Windows上使用MinGW,在Linux上使用GNU编译器,这是我使用的方法,而且非常完美。请注意,使用Qt Creator进行开发时并不一定需要使用Qt。


7

我建议您在Windows和Linux上使用CMake,因为您可以生成本地Visual Studio项目、Eclipse CDT项目和普通的makefile。

如果您的目标是多个平台,但发现自己主要在单个平台上进行开发,我强烈推荐使用持续构建/集成系统,以确保一个平台上的提交不会影响其他平台的构建。


是的,CMake在这里绝对是一个选项。我实际上正在看它。那个持续构建系统正是我希望手动完成的。我想能够从存储库中提取并在其他操作系统上构建以确保它不会出错。我的主要问题是是否要使用IDE的项目文件来开始开发。如果我使用像vim这样的东西进行开发,并通过命令行使用make文件进行构建和调试方式相同,似乎更容易。 - blewisjr
这里唯一真正的问题是如何启动项目并在版本控制系统中进行布局等操作... - blewisjr
+1 我建议使用CruiseControl(http://cruisecontrol.sourceforge.net/)进行持续集成。个人建议使用虚拟机或单独的计算机,而不是交叉开发。持续集成将自动化平台构建,并且甚至可以可能运行测试并通过电子邮件报告结果。具有本地工具的虚拟机与交叉开发一样便宜或更便宜。 - Clifford

6

Code::Blocks 是一款免费、开源的跨平台 C++ 集成开发环境(IDE)。它支持 MS 和 GCC 编译器等多种编译器。


4

我的主要问题在于编辑器、编译器和调试器。有没有什么建议?

是的:Qt Creator 可以满足您的三个需求——只需要一个下载和安装即可。选择“LGPL”许可证路线,下载和安装SDK,它甚至会为您安装gcc、g++等。集成的调试器非常好,并且可以获得来自您的代码和工具的跨平台行为。


QT Creator在Windows上是否也安装了GCC工具集? - blewisjr
1
是的,如果你选择SDK,那就是为什么它有280MB的大小。但是作为单个下载,它很容易和方便 --- 而且一切都可以正常工作。当然,你也可以使用组件完成所有操作,但是这需要更多的设置工作,并且在Windows上非常繁琐,因为没有apt-get :) - Dirk Eddelbuettel

3

您也可以在Windows上使用gcc/g++。至于调试器:gdb和ddd可能在Cygwin中。编辑器:vim(请注意:它实际上是可编程编辑器,而不是IDE)。


学习更高级的功能难吗?我通常只用它快速编辑配置文件。 - blewisjr
答案取决于什么是“更高级的功能”。但是,没有任何部分的vim是困难的,但你会经常忘记很少使用的东西,当然。 - just somebody

1

Vim, gdb, gcc/g++, makefile - 你可以在 Windows 和 Unix 上都使用它们 :)

再次推荐 Code BlocksQt Creator

也有商业工具:除了 Visual Studio 外,还有 MagicC++(IDE),调试器如 TotalViewAllineaZero-bugsUndoDB … 如果想继续使用 VStudio,请查看这些 VSBridgeWinGDB

无论如何,您始终可以在Windows上使用MSVC,在Unix上使用其他工具(gdb / DDD进行调试,vim / emacs进行编辑)-我已经以这种方式工作了许多年。在所有平台上使用共同环境很好,但有时在公司中(特别是大公司)“强制”统一环境非常困难(几乎不可能);-)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接