编译文件告诉makefile如何编译

Posted

技术标签:

【中文标题】编译文件告诉makefile如何编译【英文标题】:Compiled file tells makefile how to compile 【发布时间】:2016-02-12 01:43:16 【问题描述】:

我的问题可能听起来不合逻辑,但对我来说非常重要。

假设我们有这样的文件和文件夹

project_rat/
project_cat/
project_rabbit/
Makefile

用户可以在此处添加任何项目文件夹。 Makefile 具有以下配置变量:

model_name:= project_rat

用户可以将此model_namevariable 更改为任何文件夹。

makefile 编译相应的项目文件夹。

g++ -std=c++11 $(model_name)/main.cpp

现在我的问题是我想在Makefile 中添加一个调试/发布变量,并在此基础上打开适当的优化器。我希望从我的项目中确定这个变量。它必须取决于每个单独的项目。一个项目可能需要-O2 和另一个-O3

我可以通过任何 C++ 代码影响Makefile 吗?

【问题讨论】:

【参考方案1】:

假设您使用的是 GNU make(一个安全的选择,考虑到您使用 gcc),请将其添加到您的 Makefile

include $(model_name)/Makefile.opts

现在,在每个项目目录中创建一个文件 Makefile.opts,用于设置该项目的 Makefile 选项。

这就像 C/C++ #include 预处理器指令一样工作。

如果您不想在每个项目目录中要求Makefile.opts,请使用sinclude 而不是include

【讨论】:

以上是关于编译文件告诉makefile如何编译的主要内容,如果未能解决你的问题,请参考以下文章

Linux开发-makefile

第三部分Makefile介绍

Makefile文件

Makefile详解

(转)Makefile介绍

如何通过自动生成的makefile 看各个文件的依赖关系