Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 带有两个文件列表的Gnu Make_List_Makefile - Fatal编程技术网

List 带有两个文件列表的Gnu Make

List 带有两个文件列表的Gnu Make,list,makefile,List,Makefile,我有一个Gnu Makefile,其中有两个列表: LIST1=file01.cpp file02.cpp file03.cpp ...... LIST2=file10.cpp file11.cpp file12.cpp ..... 我想编译每个文件,但对于每个列表,我想使用不同的标志 我可以为每个文件指定一个规则。有更好的方法吗?您可以在目标基础上声明make变量。因此: LIST1=file01.cpp file02.cpp file03.cpp ...... LIST2=file10.c

我有一个Gnu Makefile,其中有两个列表:

LIST1=file01.cpp file02.cpp file03.cpp ......
LIST2=file10.cpp file11.cpp file12.cpp .....
我想编译每个文件,但对于每个列表,我想使用不同的标志


我可以为每个文件指定一个规则。有更好的方法吗?

您可以在目标基础上声明make变量。因此:

LIST1=file01.cpp file02.cpp file03.cpp ......
LIST2=file10.cpp file11.cpp file12.cpp .....
OBJ1 = $(patsubst %.cpp,%.o,$(LIST1))
OBJ2 = $(patsubst %.cpp,%.o,$(LIST2))

$(OBJ1): CXXFLAGS = <flags-for-list1>

$(OBJ2): CXXFLAGS = <flags-for-list2>

all: $(OBJ1) $(OBJ2)
$(OBJ1) $(OBJ2): %.o: %.cpp
    $(CXX) -c $(CXXFLAGS) $< -o $@
LIST1=file01.cpp file02.cpp file03.cpp。。。。。。
LIST2=file10.cpp file11.cpp file12.cpp。。。。。
OBJ1=$(patsubst%.cpp,%.o,$(列表1))
OBJ2=$(patsubst%.cpp,%.o,$(列表2))
$(OBJ1):CXXFLAGS=
$(OBJ2):CXXFLAGS=
全部:$(OBJ1)$(OBJ2)
$(OBJ1)$(OBJ2):%.o:%.cpp
$(CXX)-c$(CXXFLAGS)$<-o$@

可能离您想要的很近。

谢谢。我没有足够的声誉来提高分数,但你可以接受答案,这也有助于将问题过滤为“已回答”。