如何根据gnumake中的目标使用CC的不同值

时间:2011-02-16 15:41:50

标签: gnu-make

我有一个代码库,我想用它来制作两个不同的“目标” 一个需要我用g ++编译(我们使用gtest作为单元测试目标),另一个需要gcc4我们的deleivered代码是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变量似乎没有被用于制作我已经找到解释的预先请求。但我没有看到如何实现这一目标。

提前致谢

柯林斯

更多细节......

TESTSUBDIRS = dir1 dir1 / testing dir2 dir2 / testing

.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)

1 个答案:

答案 0 :(得分:0)

您可以使用GNU make if条件来设置变量,但不能基于目标。这通常通过让需要使用C ++的目标使用$(CXX)作为编译器来解决,并且需要使用C的目标使用$(CC)来解决。然后适当设置这些单独的变量。我认为这也是最好的方式。