根据目标定义编译变量

发布于 2024-10-19 03:32:11 字数 103 浏览 1 评论 0原文

我的 C++ 源文件查找从 makefile 传递的特定变量。当制作不同的目标时,这个变量的定义是不同的。

如何根据目标在 Makefile 中定义变量。

谢谢

my c++ source file look for a specific variable passed from the makefile. when making a different target, this variable definition is different.

How can I define a variable in Makefile based on target.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

韬韬不绝 2024-10-26 03:32:11

您可以使用特定于目标的变量值,它们传播到目标的先决条件:

all : foo bar
foo : CXXFLAGS += -DFOO
bar : CXXFLAGS += -DBAR

foo bar :
    @echo target=$@ CXXFLAGS=${CXXFLAGS}

.PHONY : all

You can use target-specific variable values, they propagate to target's prerequisites:

all : foo bar
foo : CXXFLAGS += -DFOO
bar : CXXFLAGS += -DBAR

foo bar :
    @echo target=$@ CXXFLAGS=${CXXFLAGS}

.PHONY : all
吖咩 2024-10-26 03:32:11

你的意思是这样的:

$ cat Makefile
BUILD := debug

cxxflags.debug := -g -march=native
cxxflags.release := -g -O3 -march=native -DNDEBUG
CXXFLAGS := ${cxxflags.${BUILD}}

all :
    @echo BUILD=${BUILD}
    @echo CXXFLAGS=${CXXFLAGS}

.PHONY : all

输出:

$ make
BUILD=debug
CXXFLAGS=-g -march=native

$ make BUILD=release
BUILD=release
CXXFLAGS=-g -O3 -march=native -DNDEBUG

Do you mean something like this:

$ cat Makefile
BUILD := debug

cxxflags.debug := -g -march=native
cxxflags.release := -g -O3 -march=native -DNDEBUG
CXXFLAGS := ${cxxflags.${BUILD}}

all :
    @echo BUILD=${BUILD}
    @echo CXXFLAGS=${CXXFLAGS}

.PHONY : all

Output:

$ make
BUILD=debug
CXXFLAGS=-g -march=native

$ make BUILD=release
BUILD=release
CXXFLAGS=-g -O3 -march=native -DNDEBUG
遇到 2024-10-26 03:32:11

那又怎样呢?

ifeq ($(MAKECMDGOALS),release)
    CFLAGS += -O3
else
    CFLAGS += -O0 -ggdb
endif

What about that?

ifeq ($(MAKECMDGOALS),release)
    CFLAGS += -O3
else
    CFLAGS += -O0 -ggdb
endif
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文