如何根据平台(Linux 与 OS X)修改 GNU makefile 目标的依赖关系和规则?

发布于 2024-10-11 03:16:44 字数 421 浏览 5 评论 0原文

我有一个 (GNU) makefile,其所有目标如下所示:

.PHONY: all
all: $(unittest++_tests_exe) $(cmockery_tests_exe)
 @echo Running UnitTest++ tests...
 @./$(unittest++_tests_exe)
 @echo Running Cmockery tests...
 @./$(cmockery_tests_exe)

UnitTest++ 测试在 Linux 和 Mac OS X 上运行,而 Cmockery 测试仅在 Linux 上运行。

如何修改依赖项和规则,以便 make all 仅在 Mac OS X 上构建和运行 $(unittest++_tests_exe)

I have a (GNU) makefile with an all target that looks like this:

.PHONY: all
all: $(unittest++_tests_exe) $(cmockery_tests_exe)
 @echo Running UnitTest++ tests...
 @./$(unittest++_tests_exe)
 @echo Running Cmockery tests...
 @./$(cmockery_tests_exe)

The UnitTest++ tests run on both Linux and Mac OS X, and the Cmockery tests run only on Linux.

How do I modify the dependencies and rules so that make all only builds and runs $(unittest++_tests_exe) on Mac OS X?

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

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

发布评论

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

评论(2

相权↑美人 2024-10-18 03:16:44

TED答案促使我想出以下内容:

ifeq ($(uname),Linux)
cmockery_tests_exe = cmockery_tests
else
cmockery_tests_exe = $()
endif

.PHONY: all
all: $(unittest++_tests_exe) $(cmockery_tests_exe)
 @echo Running UnitTest++ tests...
 @./$(unittest++_tests_exe)
ifeq ($(uname),Linux)
 @echo Running Cmockery tests...
 @./$(cmockery_tests_exe)
endif

它似乎有效,但我欢迎您的建议。

T.E.D.'s answer triggered me to come up with the following:

ifeq ($(uname),Linux)
cmockery_tests_exe = cmockery_tests
else
cmockery_tests_exe = $()
endif

.PHONY: all
all: $(unittest++_tests_exe) $(cmockery_tests_exe)
 @echo Running UnitTest++ tests...
 @./$(unittest++_tests_exe)
ifeq ($(uname),Linux)
 @echo Running Cmockery tests...
 @./$(cmockery_tests_exe)
endif

It seems to work, but I welcome your suggestions.

你又不是我 2024-10-18 03:16:44

我相信做到这一点的正确方法是使用像 autoconf 这样的东西。

如果你想破解它,请尝试调用 uname 并将结果放入符号中。然后就可以解析出相关部分

I believe the Right Way to do this is to use something like autoconf.

If you want to hack it, try calling uname and putting the result in a symbol. You can then parse out the relevant parts

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