Как я могу преобразовать make-файл из macOS в Windows make-файл для следующей cpp -py программы? - PullRequest
0 голосов
/ 26 апреля 2020

У меня действительно нет никакого предыдущего опыта в создании 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   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...