设置开源工具链
本文分享了我为开发 C++ 应用程序搭建开源工具链的经验。
引言
本文描述了我为编写 C++ 程序而搭建开源工具链所采取的步骤。
在文中,我将展示如何:
- 设置带有代码高亮功能的文本编辑器
- 设置构建和编译 C++ 应用程序所需的 Unix 风格环境
- 设置 C/C++ 编译器
- 使用 makefile 创建和编译一个 Hello World C++ 程序
背景
前段时间,我决定分享我开发的一个应用程序的源代码。我使用 Microsoft C++、Visual Studio 编写了该程序,并大量使用了 MFC。我发现有一群人愿意提供帮助,但由于他们没有 Microsoft C++,所以无法提供帮助。因此,我开始研究使用专有工具的替代方案,并在这篇文章中分享我的经验。
写这篇文章的第二个原因是,我想写更多关于我发现的其他技术的文章。这篇文章将让人们了解我使用的工具链,以便他们可以阅读后续文章。
遵循本教程的先决条件
为了编写本教程,我从全新安装的 Windows XP 家庭版开始。我实际上为此使用了 VMware 虚拟机。本教程应该适用于大多数 Windows 版本。
下载并安装 Notepad++
Notepad++ 是一款开源文本编辑器,包含标签式浏览和语法高亮等功能。它还可自定义,这将允许我添加菜单项,以便一键编译和运行程序。
请访问 http://sourceforge.net/project/showfiles.php?group_id=95717&package_id=102072 下载最新版本。我下载了 npp.5.4.3.Installer.exe。
设置起来很简单,我使用了所有默认设置,所以这里就不赘述步骤了。您可以通过运行应用程序(应该在“程序文件”菜单中)来检查 Notepad++ 是否正常工作。
注意:如果您想了解更多关于 Notepad++ 的信息,请访问其网站:http://notepad-plus.sourceforge.net/uk/site.htm。
下载并安装 MinGW
这是实际的编译器工具链。
请使用自动安装程序 http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=240780 进行安装。
我选择的选项如下:
- 下载并安装
- 当前版本
- 完全初始化(您必须至少安装基本工具、G++ 和 make,但我建议安装所有内容)
对于其他所有选项,我使用默认设置。
下载并安装 MSYS
虽然并非绝对必要,但我使用 MSYS。这是一个适用于 Windows 的最小化 Unix 风格系统 (SYStem),它在 Windows 机器上设置了一个类似 Linux 的环境。我用我的程序下载并使用各种库(压缩库、GTK+、MySQL 库等),而且 make 文件中经常包含 Unix 命令。主要的例子是 make clean 部分,它使用 rm 而不是 del。MinGW 将使这些操作变得更加容易。
访问 http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=24963。您可以选择当前发布部分,它将展开显示当前发布。我下载了 MSYS-1.0.10.exe。
我使用了所有默认设置和选项进行安装。
注意:如果您想了解更多关于 MSYS 和 MinGW 的信息,请访问其网站:http://www.mingw.org/。
设置环境变量
我们需要将 MinGW 的 bin 目录和 MSYS 的 bin 目录添加到路径中。为此,请前往“控制面板”->“系统”->“高级”选项卡->“环境变量”按钮。在“系统变量”部分下,找到 Path 变量并按“编辑”。将 MinGW 目录添加到末尾。(地址之间用分号分隔,因此我需要在我的系统上添加 ;C:\MinGW\bin;C:\msys\1.0\bin。)
同时,添加一个名为 HOME 的用户变量,并将其值设置为 C:\msys\1.0\home\<
注意:不要用引号将路径括起来。这会导致 make 找不到目录。(尽管普通 shell 会找到。)
通过运行命令提示符并输入 gcc --help 来检查是否成功。如果出现“命令未找到”错误,则表示路径未正确设置。
设置 C/C++ 编译器
最后,我们准备好将第一个程序组合并编译。点击蓝色 M 图标加载 MSYS。(为方便起见,我通常将其放在快速启动栏中。)请按照以下步骤操作:
注意:您可以从此处复制命令,然后在 MSYS 中按 shift + INS 运行它。
创建代码目录
- cd /c/
- mkdir code
为我们的 Hello World 应用程序创建一个目录
- cd /c/code/
- mkdir hello_world
创建 C++ 程序
- "/c/program files/notepad++/notepad++.exe" /c/code/hello_world/main.cpp
- 粘贴以下代码,然后保存并关闭 Notepad++
#include <iostream>
int main( int argc, char *argv[] )
{
printf("Hello World\n");
return 0;
}
复制这段代码时请小心。小于号“<”可能会变成“<”,大于号“>”可能会变成“>”。
别忘了文件末尾的换行符。
创建 Makefile
- "/c/program files/notepad++/notepad++.exe" /c/code/hello_world/makefile
- 粘贴以下代码,然后保存并关闭 Notepad++
$(warning Starting Makefile)
CXX=g++
main.exe: main.cpp
$(CXX) main.cpp -o main.exe
clean:
-rm main.exe
通过制作和运行程序来测试设置
- cd /c/code/hello_world/
- make
- ./main.exe
程序运行后,您应该会看到文本“Hello World”出现。
最后,检查清理工作是否正常。
- cd /c/code/hello_world/
- make clean
您应该会看到 exe 文件已消失。
在 Notepad++ 中设置编译和运行命令
我们可以设置 Notepad++ 快捷方式。首先,按照以下步骤创建两个批处理文件:
- "/c/program files/notepad++/notepad++.exe" /c/code/run.bat
- 粘贴以下代码,然后保存并关闭 Notepad++
:##BATCH to run fron notepad++
c:
cd\
cd %1
make
pause
main.exe
pause
- "/c/program files/notepad++/notepad++.exe" /c/code/run_clean.bat
- 粘贴以下代码,然后保存并关闭 Notepad++
:##BATCH to run fron notepad++
c:
cd\
cd %1
make clean
pause
现在,我们可以设置 Notepad++ 来运行这些批处理文件。
- 加载 Notepad++
- 按 F5
- 输入 c:\code\run.bat $(CURRENT_DIRECTORY)
- 将命令保存为 RUN CODE
- 按 F5
- 输入 c:\code\run_clean.bat $(CURRENT_DIRECTORY)
- 将命令保存为 CLEAN
全部完成 - 那么我们得到了什么?
我们现在已经设置好了一个工具链。目录 c:\code 包含程序,我们可以为新程序创建子目录。每个子目录都需要一个 makefile 和程序文件。makefile 可以根据所需的程序文件进行更改。您可以使用 Notepad++ 进行编辑,并使用“运行代码”菜单选项来制作和运行程序。“运行代码”命令将在 Notepad++ 中当前文件所在的目录中运行 make。
这可能看起来很简单,不值得写一篇文章,但我计划写更多文章,需要分享我的系统是如何设置的,以便它们有意义。
使用此方法编写的文章(目前)
关注点
Makefile 笔记
- 更改 makefile 时,应使用 make clean 选项。通常,make 程序会自动根据文件修改日期检查需要运行哪些命令。当您更改 makefile 时,这将不起作用,因此您可以使用 make clean 选项强制它重新运行。
- Make 是一个非常强大的构建程序系统。我提供了一个简单的 make 脚本,它可以工作,但 make 脚本也可以更高级。您可以配置 DEBUG 和 RELEASE 版本。我以前让我的编译器工具为我创建 make 文件,但我发现亲手制作它们迫使我学习了大量关于构建过程的知识,现在我能更好地理解构建过程中的错误消息。
反馈
这就是我用来搭建这个工具链的过程。我很有兴趣听取任何尝试遵循这些步骤的人的经验。如果您能帮助我修改说明,使其对其他人更容易理解,那将非常棒。我也很想知道大家对我的工具链设置方式的看法。多学习并改进做事方式总是好的。
历史
- 2009年6月7日 - 第一版。