2016-02-12 67 views
1

我在问什么可能听起来不合逻辑,但这对我来说非常重要。编译的文件告诉makefile如何编译

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

project_rat/ 
project_cat/ 
project_rabbit/ 
Makefile 

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

model_name:= project_rat 

用户可能这个model_name变量更改任何文件夹。

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

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

现在我的问题是,我想在调试/释放变量添加到Makefile并根据我打开相应的优化。我想从我的项目中确定这个变量。它必须取决于每个单独的项目。一个项目可能需要-O2和其他-O3

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

回答

4

假设你使用GNU使(一个安全的赌注,因为你的gcc使用),将它添加到您的Makefile

include $(model_name)/Makefile.opts 

现在,创建在每个项目目录中的文件Makefile.opts,该套该项目的Makefile选项。

这和C/C++ #include预处理指令一样有效。

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