У меня действительно нет никакого предыдущего опыта в создании make-файла. У меня есть следующий make-файл, который скомпилирует все файлы cpp. Во все имеющиеся у меня файлы cpp я добавил код python для запуска с cpp после компиляции. Этот make-файл хорошо работает для macOS, но я хочу использовать его и для системы Windows.
Следующий make-файл предназначен для нормально работающей macOS -
all: selUB
sourcesF := $(wildcard ./src/*.f)
sourcesC := $(wildcard ./src/*.cpp)
objectsF := $(patsubst %.f,%.o,$(sourcesF))
objectsC := $(patsubst %.cpp,%.o,$(sourcesC))
objects := $(patsubst ./src%,.%,$(objectsF)) $(patsubst ./src%,.%,$(objectsC))
selUB:
@echo 'Building target $@'
# For DEBUG add option -g3 to g++ and gfortran
/usr/local/bin/gfortran -c -O0 -Wall -fno-automatic -fno-underscoring -fmessage-length=0 $(sourcesF)
g++ -O0 -Wall -c -fmessage-length=0 $(sourcesC) -
I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7
g++ -lselTools -L. -dynamiclib -olibSelUB.dylib $(objects) -L/System/Library/Frameworks/Python.framework/Versions/2.7/lib -lpython2.7 -lm
mv libSelUB.dylib ../_selroot/macOS/sel/lib
rm *.o
clean:
Я изменил make-файл macOS выше, но у меня возникают ошибки при связывании библиотек python в Windows.
Следующий make-файл предназначен для Windows, который я изменил и не работал-
all: selUB
sourcesF := $(wildcard ../src/*.f)
sourcesC := $(wildcard ../src/*.cpp)
objectsF := $(patsubst %.f,%.o,$(sourcesF))
objectsC := $(patsubst %.cpp,%.o,$(sourcesC))
objects := $(patsubst ../src%,.%,$(objectsF)) $(patsubst ../src%,.%,$(objectsC))
selUB:
@echo 'Building target $@'
# For DEBUG add option -g3 to g++ and gfortran
gfortran -c -g3 -O0 -Wall \
-fno-automatic -fno-underscoring -fmessage-length=0 \
$(sourcesF)
g++ -O0 -Wall -c -g3 -fmessage-length=0 $(sourcesC) -IC:\Python27\include
g++ -shared -o ./inselUB.dll \
-Wall -LC:\Users\alex\Documents\sel.work\selUB\resources selTools.dll \
-LC:\Python27\libs -lpython27 $(objects)
clean:
del *.o