Ich baue eine Reihe von Linux-Kernel-Modulen mit geteilten Quellcode. Von dem, was ich verstehe, muss das Makefile "Makefile" genannt werden, also muss ich das gleiche Makefile benutzen, um zwei verschiedene Module zu bauen. Wie kann ich zwei verschiedene Module innerhalb desselben Makefile mit demselben Quellcode, aber mit zwei verschiedenen Build-Optionen erstellen?Aus Baumkern-Modulen: Mehrere Module, ein einzelnes Makefile, dieselbe Quelldatei, verschiedene Build-Optionen
Zum Beispiel werden meine Module Modul1 und Modul2 genannt. So habe ich die folgende Zeile, sie zu definieren:
obj-m := module1.o module2.o
unter anderen Dateien, sowohl module1 und Module2 die gleiche Quelldatei code.c
, verwenden muß, aber mit unterschiedlichen Build-Optionen gebaut. So sagt zum Beispiel der Makefile enthält die folgenden Zeilen:
module1-objs = module1_code.o other_code.o
module2-objs = module2_code.o other_code.o
Ich mag module1_code.o
und module2_code.o
von code.c gebaut werden, aber mit unterschiedlichen Optionen. Insbesondere möchte ich eine mit einem Makro -DPREPROCEFFOR_FLAG=1
definiert und ohne das Makro erstellt.
Aus dem, was ich verstehe, schließt das System von Makefiles in Linux implizit, dass für eine Objektdatei namens "code.o" die Quelldatei "code.c" heißt, also wie würde ich das erreichen? Ist das möglich? Gibt es einen besseren Weg, dies zu tun?
Sie können Ihrem Makefile alles geben, was Sie wollen. make wird jedoch nur nach [bestimmten Dateinamen] (http://www.gnu.org/software/make/manual/make.html#Makefile-Arguments) suchen. Für alle anderen Namen müssen Sie das Argument '-f' verwenden. –
Wenn Sie eine spezifische Regel für Ihre Objektdatei mit einer Vorraussetzung für die relevante Quelldatei und Regeln zum Erstellen des Ziels erstellen, wird make diese anstelle der von Ihnen erwähnten Standardregel verwenden. Also 'module1_code.o: code.c; '. –