如何根据平台(Linux与OS X)修改GNU makefile目标的依赖项和规则?
我有一个GNU makefile,其所有目标如下所示:如何根据平台(Linux与OS X)修改GNU makefile目标的依赖项和规则?,makefile,conditional,gnu-make,Makefile,Conditional,Gnu Make,我有一个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上运行,而Cmoc
.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上运行
我如何修改依赖项和规则,以便在Mac OS X上只生成和运行$unittest++\u tests\u exe?我认为正确的方法是使用类似autoconf的东西 如果你想破解它,试着调用uname并将结果放入一个符号中。然后,您可以解析出触发我得出以下结论的相关部分:
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
这似乎有效,但我欢迎你的建议。我想我很懒,这可以说是程序员的优点,但我有一个生成文件,它工作得很好,可读性很强。我没有任何autoconf的经验,这似乎不足以成为学习它的理由。有人知道为什么$uname不适合我,而$shell uname适合我吗?