编译文件告诉生成文件如何编译

Compiled file tells makefile how to compile

本文关键字:编译 文件 何编译      更新时间:2023-10-16

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

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

project_rat/
project_cat/
project_rabbit/
Makefile

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

model_name:= project_rat

用户可以将此model_name变量更改为任何文件夹。

生成文件编译相应的项目文件夹。

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

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

我可以从任何C++代码中影响Makefile吗?

假设你使用的是GNU make(考虑到你使用gcc,这是一个安全的选择),把它添加到你的Makefile

include $(model_name)/Makefile.opts

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

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

如果不希望要求每个项目目录中都有Makefile.opts,请使用 sinclude 而不是 include