使用 make 编译简单的 C++ 项目 [关闭]

Posted

技术标签:

【中文标题】使用 make 编译简单的 C++ 项目 [关闭]【英文标题】:Compiling simple C++ projects using make [closed] 【发布时间】:2015-11-25 15:27:45 【问题描述】:

我想完全从使用 Windows 切换到 Linux (Ubuntu)。阻止我转换的最后一个问题是必须用 C++ 编写代码。在 Windows 上,我使用 Visual Studio。在 Linux 上,我目前正在努力理解 make 的工作原理。

我需要一套简单的说明和技巧。假设我有五个文件:main.cppBuisnessCard.hBuisnessCard.cppTell.hTell.cpp。请告诉我,如何创建 Makefile,这样它将为我完成以下任务: 1) 当我输入 make main 时,我希望它创建“可执行”文件 ./main,其中将包含来自 BuisnessCard.hTell.h 的代码(当然。根据 .cpp 文件)。 2) 当我输入make main_debug 时,它会执行相同的操作,但编译选项不同(称为flags?)

谁能回答我的问题或提供基本教程的链接?我已经尝试过:MRBook's tutorial 和this SO post,但它已经有点太高级了,而我似乎没有掌握基础知识。

【问题讨论】:

如果你只用 C++ 编码,你可能想试试 CMake 而不是 make,好处是它还兼容 Windows 和 OS X 1) 题外话 2) 还有其他构建系统,例如缺点。 3) Linux 中也有 IDE。 @oLen,make 与 Windows 兼容的一样——叫做 nmake。 两者都使用过之后,我会热情地支持使用 CMake for C/C++ 的建议。但是,如果您想专门学习 make(特别是对于其他语言或系统的项目 - 我已经将它用于从 LaTeX 到 Lilypad 到 ImageMagick 的任何东西),那么官方文档很容易获得:gnu.org/software/make/manual/make.html 【参考方案1】:

如果你对 make 感兴趣,我推荐阅读这个introduction to GNU make。这是您的程序的一个简单(但不是很健壮)的 makefile 示例:

main: main.cpp BuisnessCard.h BuisnessCard.cpp Tell.h Tell.cpp
    c++ $^

虽然了解 make 的基础知识可能很有用,但我建议使用更高级的工具,例如 CMake 来管理您的构建配置。这是一个类似的 CMake 配置:

project(MYPROJECT)
add_executable(main main.cpp BuisnessCard.h BuisnessCard.cpp Tell.h Tell.cpp)

CMake 的优势在于它可以为各种 IDE 生成可移植的 Makefile 或项目文件。它还允许为已安装的编译器、库等编写平台检查。

使用CMAKE_BUILD_TYPE 在不同的构建配置之间切换也很容易,例如使用可以运行的调试配置

cmake -DCMAKE_BUILD_TYPE=Debug .

【讨论】:

感谢您的宝贵时间。这就是我要找的东西。【参考方案2】:

Makefile 的形式

main: CXXFLAGS = -Wall
main: main.o BuisnessCard.o Tell.o

main_debug: CXXFLAGS = -Wall -g
main_debug: main.o BuisnessCard.o Tell.o

应该让你接近你想要的。

参考资料:

Makefile - change variable value depending on a target https://www.gnu.org/software/make/manual/html_node/Target_002dspecific.html

【讨论】:

以上是关于使用 make 编译简单的 C++ 项目 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在包含 make 文件的 Linux 中创建的 Visual Studio 2015 中编译 C++ 项目

如何在 WSL2 上使用 OpenCV 加快 C++ 项目的构建速度? [关闭]

如何使用 GNU make 编译多个简单项目

大型项目使用Automake/Autoconf完成编译配置(标准的编译过程已经变成了简单的三部曲:configure/make/make install,)

centos中软件源码简单的编译安装./configure,make ,make install

如何正确设置项目的 make 文件?