使用 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.cpp、BuisnessCard.h、BuisnessCard.cpp、Tell.h、 Tell.cpp。请告诉我,如何创建 Makefile,这样它将为我完成以下任务:
1) 当我输入 make main
时,我希望它创建“可执行”文件 ./main,其中将包含来自 BuisnessCard.h 和 Tell.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++ 项目的构建速度? [关闭]
大型项目使用Automake/Autoconf完成编译配置(标准的编译过程已经变成了简单的三部曲:configure/make/make install,)