У меня есть одна кодовая база, которую я хотел бы использовать для достижения двух разных "целей"
Один требует, чтобы я скомпилировал с g ++ (мы используем gtest для цели модульного теста), другой требует gcc4, наш удаленный код - ANSI C.
Я пытаюсь использовать целевые переменные gnu make для достижения этой цели
так что у меня
unit_test_target: CC=g++
unit_test_target: unit_test_pre-reqs
recipe
и
lab_target:CC=gcc4
lab_target: lab_pre_reqs
recipe
Переменная CC, похоже, не используется при выполнении предварительных требований, для которых я нашел объяснение. Но я не вижу, как этого добиться.
Заранее спасибо
Collins
Подробнее ...
TESTSUBDIRS = dir1 dir1 / тестирование dir2 dir2 / тестирование
.PHONY: testsubdirs $ (TESTSUBDIRS)
testsubdirs: $ (TESTSUBDIRS)
$ (TESTSUBDIRS): objdir
$ (MAKE) -e -C $ @
objdir: $ (CSPLATFORMDIR) / makebuilddir
$ (CSPLATFORMDIR) / makebuilddir $ (BUILDDIR)
LAB4DIRS = dir1 dir2
.PHONY: t100lab4dirs $ (LAB4DIRS)
lab4dirs: $ (LAB4DIRS)
$ (T100LAB4SDIRS): objdir
$ (MAKE) -e -C $ @
gtest: CC = g ++
gtest: $ (CSPLATFORMDIR) / makebuilddir $ (TESTSUBDIRS)
$ (CSPLATFORMDIR) / makebuilddir $ (BUILDDIR)
$ (AR) -r $ (TARGET) $ (OBJS)
ls -l $ (TARGET)
g ++ -I $ (BUILDDIR) / .. -I $ (BUILDDIR) ../../ inc -I $ (GTESTINC) $ (BUILDDIR) / *. o -lpthread $ (GTESTDIR) /make/gtest_main.a - o $ (BUILDDIR) / gtest
lab_target.a: CC = gcc4
lab_target.a: $ (CSPLATFORMDIR) / makebuilddir $ (T100LAB4DIRS)
$ (CSPLATFORMDIR) / makebuilddir $ (BUILDDIR)
$ (AR) -r $ (TARGET) $ (OBJS)
ls -l $ (TARGET)