Как мне изменить зависимости и правила цели make-файла GNU в зависимости от платформы (Linux против OS X)? - PullRequest
2 голосов
/ 08 января 2011

У меня есть (GNU) make-файл со всей целью, который выглядит следующим образом:

.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 только собирал и запускал $(unittest++_tests_exe) в Mac OS X?

Ответы [ 2 ]

3 голосов
/ 08 января 2011

TED s answer подтолкнул меня к следующему:

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

Кажется, что это работает, но я приветствую ваши предложения.

2 голосов
/ 08 января 2011

Я считаю, что правильный способ сделать это - использовать что-то вроде autoconf.

Если вы хотите взломать его, попробуйте вызвать uname и поместить результат в символ.Затем вы можете разобрать соответствующие детали

...