У меня есть проект, который я могу собрать без проблем в Ubuntu.Makefile в https://github.com/avalon-lang/avaloni/blob/master/Makefile - это тот, который я пытаюсь адаптировать для Windows 10.
У меня установлен MingW-w64 и GNU Make-32.
Когда я запускаю make для Makefile, CFLAGS идругие флаги, передаваемые компилятору, не отображаются, оставляя пробелы в отраженном выводе вместо флагов компилятора.Поэтому файлы, необходимые для успешной компиляции, не найдены.
Я попытался заменить переменные CFLAGS, SYSINC и INC их содержимым, но ничего не изменилось.Они просто игнорируются, как будто make удалил их.
cc := g++
cflags := -std=c++11 -g -Wall -pedantic -DDEBUG -fopenmp
ldpaths := -LC:/Boost/lib
rdpaths := -Wl,-rpath=C:/Boost/lib
ldflags := -lboost_filesystem-mgw81-mt-x64-1_68 -lboost_system-mgw81-mt-x64-1_68 -fopenmp
src_dir := src
inc := -Isrc -Ideps/qpp
sysinc := -isystem deps/boost -isystem deps/eigen
build_dir := build
bin_dir := bin
target := $(bin_dir)/avaloni.exe
src_ext := cpp
sources := $(shell dir $(src_dir)\*.$(src_ext) /b /s)
objects := $(patsubst $(src_dir)\%,$(build_dir)\%,$(sources:.$(src_ext)=.o))
install_dir := C:/Avalon
sdk_path := C:/Avalon/AvalonSdk
.PHONY: all
all: setup $(target)
$(target): $(objects)
$(cc) $^ -o $(target) $(ldpaths) $(ldflags) $(rdpaths)
$(build_dir)\%.o: $(src_dir)\%.$(src_ext)
@if not exist "$(dir $@)" mkdir $(dir $@)
$(cc) $(cflags) $(sysinc) $(inc) -c -o $@ $< #!!! This is the problem line.
Во время компиляции я ожидаю строку, подобную следующей:
g++ -std=c++11 -g -Wall -pedantic -DDEBUG -fopenmp -isystem deps/boost -isystem deps/eigen -Isrc -Ideps/qpp -c -o file.o file.cpp
Но я получаю:
g++ -c -o file.o file.cpp