gpt4 book ai didi

c++ - 将参数传递给 Makefile 以更改编译后的代码

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:04:48 26 4
gpt4 key购买 nike

我是新来的。我正在研究 C++ 共享库,我希望它可以选择在支持或不支持某个功能(代码块)的情况下进行编译。换句话说,我如何通过(可能)将参数传递给 make 命令来让用户选择是否编译具有该功能的库?

例如,我需要用户能够这样做:

make --with-feature-x  

我该怎么做?例如,我需要写一个配置文件吗?或者我可以直接在我的 Makefile 中执行此操作吗?

最佳答案

我相信以下方法应该有效。您在运行 make 时定义了一个环境变量。在 Makefile 中,您检查环境变量的状态。根据状态,您可以定义在编译代码时将传递给 g++ 的选项。 g++ 使用预处理阶段的选项来决定要包含在文件中的内容(例如 source.cpp)。

命令

make FEATURE=1

生成文件

ifeq ($(FEATURE), 1)  #at this point, the makefile checks if FEATURE is enabled
OPTS = -DINCLUDE_FEATURE #variable passed to g++
endif

object:
g++ $(OPTS) source.cpp -o executable //OPTS may contain -DINCLUDE_FEATURE

源代码.cpp

#ifdef INCLUDE_FEATURE 
#include feature.h

//functions that get compiled when feature is enabled
void FeatureFunction1() {
//blah
}

void FeatureFunction2() {
//blah
}

#endif

检查是否传入了 FEATURE(作为任何值):

ifdef FEATURE
#do something based on it
else
# feature is not defined. Maybe set it to default value
FEATURE=0
endif

关于c++ - 将参数传递给 Makefile 以更改编译后的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18027583/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com