|
Генератор Makefile
|
|
| zamabuvaraeu | Дата: Вторник, 21.10.2025, 18:16 | Сообщение # 1 |
|
Полковник
Группа: Друзья
Сообщений: 173
Статус: Offline
| Когда мне стало лень писать миллионы файлов build.cmd для сборки проекта, я решил автоматизировать этот процесс. Под руку попалась утилита make, и теперь можно автоматически создавать Makefile для неё.
Преимущества: 1. Изменили всего одну строку в файле в проекте — не нужно пересобирать остальные сотни файлов. 2. Можно избавиться от рантайма в проекте. 3. Как следствие удаления рантайма — используя прямые вызовы ОС, проект можно собрать и для Win95. С рантаймом нельзя. 4. Следствие использования утилиты make — сборка проекта в несколько потоков (ускорение).
Что делать: 1. Скачиваем mingw, например, отсюда https://github.com/brechtsanders/winlibs_mingw/releases Жмём «Assets», появится список архивов. Заодно получим 64-битный отладчик GDB. 2. Компилируем Генератор. 3. Запускаем генератор. 4. Правим и запускаем setenv.cmd. 5. Готово.
Для линукса пока не работает. Работа ведётся.
Подробности тут: https://github.com/zamabuv....ault.md Исходный код генератора: https://github.com/zamabuv....ile.bas
Пожелания, предложения, вопросы и ответы приветствуются.
|
| |
|
|
| haav | Дата: Вторник, 21.10.2025, 20:37 | Сообщение # 2 |
 Генералиссимус
Группа: Администраторы
Сообщений: 1436
Статус: Offline
| Судя по описанию , хорошая утилита. Потом попробую. Спасибо!
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
| |
|
|
| DarkDemon | Дата: Среда, 22.10.2025, 05:20 | Сообщение # 3 |
|
Генерал-майор
Группа: Друзья
Сообщений: 261
Статус: Offline
| Думаю кому-то точно пригодится, сейчас мода на эти утилиты сборки. У меня нет таких масштабных проектов, которые компилятся несколько секунд, поэтому собираю бинарники в IDE.
|
| |
|
|
| haav | Дата: Среда, 22.10.2025, 06:40 | Сообщение # 4 |
 Генералиссимус
Группа: Администраторы
Сообщений: 1436
Статус: Offline
| С пробелами беда?
Цитата > CreateMakefile createdirs
"C:\Program Files (x86)\FreeBASIC-1.10.1-winlibs-gcc-9.3.0\fbc64.exe" -gen gcc d WINVER=1281 -d _WIN32_WINNT=1281 -s console -w error -maxerr 1 -O 0 -r -showi cludes -m a -i src src\main.bas
"C:\Program" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. Так же есть вопрос по утилите:
в описании сказано , что библиотеки надо добавлять вручную. То есть я не могу создать проект с рантаймом по умолчанию и воспользоваться утилитой , чтобы она мне создала валидный makefile? Скажем я создаю проект, там у меня 2 файла BAS и 2 BI. Мне надо самому включать в makefile все эти libfbgfx.a и пр. ? И про виндовые библиотеки судя по всему та же песня? Многие любят включить банально виндовый заголовок и этого достаточно для компиляции гуишного приложения.
Было бы неплохо данную утилиту сделать универсальной , чтобы она могла создавать проекты makefiles без рантайма и с рантаймом
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
| |
|
|
| zamabuvaraeu | Дата: Среда, 22.10.2025, 08:13 | Сообщение # 5 |
|
Полковник
Группа: Друзья
Сообщений: 173
Статус: Offline
| Это не с пробелами беда, это фрибесик не существует по указанному пути.
В чём проблема? Я запускаю дочерний процесс "Open Pipe(ProgramName, For Input, As FileNumber)" и читаю его ввод и вывод, а когда файл не существует — сишный рантайм вместо того чтобы выдавать код ошибки выводит сообщение в консоль. (Мне что, парсить собственный консольный ввод‐вывод, чтобы получить код ошибки, что ли. Негодую.) Это неизлечимо. (Ну да, а ещё негодую по поводу невозможности получения кода завершения дочернего процесса. Вместо того чтобы драться с рантаймом, проще выкинуть весь этот рантайм и вызывать функции операционной системы напрямую.)
Цитата > CreateMakefile createdirs
Команду createdirs нужно отправлять в утилиту make. Дополнил этот кусок в документации.
Цитата в описании сказано , что библиотеки надо добавлять вручную В текущей реализации так. И это может представлять определённую проблему.
Впрочем, всякие стандартные WinAPI уже добавлены (см. файл setenv.cmd с параметрами LIBS_WIN95, LIBS_WINNT). Стандартная бибилиотека фрибесика libfb тоже есть. Графическую fbgfx добавляем вручную.
Зачем так сделано? Чтобы узнать какие библиотеки добавлять, нужно парсить исходные файлы и все заголовочники, на которые они ссылаются. В случае какой‐нибудь #include "windows.bi" это сотни файлов. А ещё библиотека может включаться или выключаться в зависимости от какой‐нибудь хитрой дефуне. Это значит нужно создать компилятор, который бы разруливал дефуниции и список библиотек. Вот заголовочники получить можно через -showincludes, а подключаемые библиотеки нет. А ещё подключаемые библиотеки могут вообще не упоминаться в исходном коде, например, есть какой‐нибудь ScreenRes, а inclib fbgfx — нету. Как узнать какая библиотека нужна? Это сложно.
Возможно потом что‐нибудь придумаю.
|
| |
|
|
| haav | Дата: Среда, 22.10.2025, 10:58 | Сообщение # 6 |
 Генералиссимус
Группа: Администраторы
Сообщений: 1436
Статус: Offline
| Че-то нифига не получается , возможно где-то туплю. Даже директории не создаются. Заходит в директорию , далее команда mkdir запускается и ошибок не выводит (пустая строка в выводе). Специально создал каталог без пробелов и кириллицы. За "5 минут" тут не разобраться , потом как-нибудь.
P.S. GUI бы может облегчил задачу по установке путей , и пр. Типа указать путь к компилятору , потом к каталогу make , добавлять библиотеки. Чтобы это все не делать в текстовом файле , разыскивая куда и что надо прописывать.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
| |
|
|
| haav | Дата: Пятница, 24.10.2025, 05:42 | Сообщение # 7 |
 Генералиссимус
Группа: Администраторы
Сообщений: 1436
Статус: Offline
| В каталоге src создал файлы main.bas , main.bi , 1.bi , 2.bi Запустил CreateMakefile , получил 2 файла setenv.cmd , makefile Пытался создать каталоги , используя make createdirs ,но каталоги из под MAKE не создаются. Я создал их вручную. Далее правлю пути и запускаю setenv.cmd , тут вроде без ошибок Далее запускаю make all , но компиляция безуспешная. Судя по всему , makefile не валидный , потому как не содержит имен файлов и зависимостей. И как итог:
Цитата C:\mingw32\home\user\1234>"C:\mingw32\usr\bin\make.exe" all "C:\FB\bin\win32\gcc.exe" -Wl,--subsystem,console -Wl,- no-seh -Wl,--nxcompat -Wl,--stack 2097152,2097152 -pipe -nostdlib -L . -L "C:\FB\lib\win32" -T "C:\FB\lib\win32 fbextra.x" -s -Wl,--gc-sections "C:\FB\lib\win32\crt2.o "C:\FB\lib\win32\crtbegin.o" "C:\FB\lib\win32\fbrt0.o" obj/Release/x86/ -Wl,--start-group -ladvapi32 -lcomctl3 -lcomdlg32 -lcrypt32 -lgdi32 -lkernel32 -lole32 -loleaut32 -lshell32 -lshlwapi -lwsock32 -luser32 -lgdiplus -lws2_32 -lmswsock -luuid -lmsvcrt -lfb -Wl,--end group "C:\FB\lib\win32\crtend.o" -o bin/Release/x86/a.e e gcc.exe: error: 2097152,2097152: No such file or directory make: *** [Makefile:216: bin/Release/x86/a.exe] Error 1
Так же имея нужные каталоги и файлы , пробовал пересоздавать makefile , но ничего путного не получилось. Все это я тестил на Win7 32-bit.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
| |
|
|
| zamabuvaraeu | Дата: Пятница, 24.10.2025, 07:53 | Сообщение # 8 |
|
Полковник
Группа: Друзья
Сообщений: 173
Статус: Offline
| А какой он Makefile создаёт?
|
| |
|
|
| haav | Дата: Пятница, 24.10.2025, 08:11 | Сообщение # 9 |
 Генералиссимус
Группа: Администраторы
Сообщений: 1436
Статус: Offline
| Код .PHONY: all debug release clean createdirs all: release debug # Legends: # $@ - target name # $^ - set of dependent files # $< - name of first dependency # % - pattern # $* - variable pattern FBC ?= fbc.exe CC ?= gcc.exe AS ?= as.exe AR ?= ar.exe GORC ?= GoRC.exe LD ?= ld.exe DLL_TOOL ?= dlltool.exe LIB_DIR ?= INC_DIR ?= LD_SCRIPT ?= TARGET_TRIPLET ?= MARCH ?= i686 USE_RUNTIME ?= TRUE FBC_VER ?= _FBC1101 GCC_VER ?= _GCC0930 ifeq ($(USE_RUNTIME),TRUE) RUNTIME = _RT else RUNTIME = _WRT endif OUTPUT_FILE_NAME ?= a$(FILE_SUFFIX).exe PATH_SEP ?= / MOVE_PATH_SEP ?= \\ MOVE_COMMAND ?= cmd.exe /c move /y DELETE_COMMAND ?= cmd.exe /c del /f /q MKDIR_COMMAND ?= cmd.exe /c mkdir CPREPROCESSOR_COMMAND ?= cmd.exe /c echo cscript.exe //nologo fix-emitted-code.vbs ifeq ($(PROCESSOR_ARCHITECTURE),AMD64) BIN_DEBUG_DIR ?= bin$(PATH_SEP)Debug$(PATH_SEP)x64 BIN_RELEASE_DIR ?= bin$(PATH_SEP)Release$(PATH_SEP)x64 OBJ_DEBUG_DIR ?= obj$(PATH_SEP)Debug$(PATH_SEP)x64 OBJ_RELEASE_DIR ?= obj$(PATH_SEP)Release$(PATH_SEP)x64 BIN_DEBUG_DIR_MOVE ?= bin$(MOVE_PATH_SEP)Debug$(MOVE_PATH_SEP)x64 BIN_RELEASE_DIR_MOVE ?= bin$(MOVE_PATH_SEP)Release$(MOVE_PATH_SEP)x64 OBJ_DEBUG_DIR_MOVE ?= obj$(MOVE_PATH_SEP)Debug$(MOVE_PATH_SEP)x64 OBJ_RELEASE_DIR_MOVE ?= obj$(MOVE_PATH_SEP)Release$(MOVE_PATH_SEP)x64 else BIN_DEBUG_DIR ?= bin$(PATH_SEP)Debug$(PATH_SEP)x86 BIN_RELEASE_DIR ?= bin$(PATH_SEP)Release$(PATH_SEP)x86 OBJ_DEBUG_DIR ?= obj$(PATH_SEP)Debug$(PATH_SEP)x86 OBJ_RELEASE_DIR ?= obj$(PATH_SEP)Release$(PATH_SEP)x86 BIN_DEBUG_DIR_MOVE ?= bin$(MOVE_PATH_SEP)Debug$(MOVE_PATH_SEP)x86 BIN_RELEASE_DIR_MOVE ?= bin$(MOVE_PATH_SEP)Release$(MOVE_PATH_SEP)x86 OBJ_DEBUG_DIR_MOVE ?= obj$(MOVE_PATH_SEP)Debug$(MOVE_PATH_SEP)x86 OBJ_RELEASE_DIR_MOVE ?= obj$(MOVE_PATH_SEP)Release$(MOVE_PATH_SEP)x86 endif FBCFLAGS+=-gen gcc ifeq ($(USE_UNICODE),TRUE) FBCFLAGS+=-d UNICODE FBCFLAGS+=-d _UNICODE endif FBCFLAGS+=-d WINVER=$(WINVER) FBCFLAGS+=-d _WIN32_WINNT=$(_WIN32_WINNT) FBCFLAGS+=-m a ifeq ($(USE_RUNTIME),TRUE) else FBCFLAGS+=-d WITHOUT_RUNTIME endif FBCFLAGS+=-w error -maxerr 1 ifneq ($(INC_DIR),) FBCFLAGS+=-i "$(INC_DIR)" endif FBCFLAGS+=-i src FBCFLAGS+=-r FBCFLAGS+=-s console FBCFLAGS+=-O 0 FBCFLAGS_DEBUG+=-g debug: FBCFLAGS+=$(FBCFLAGS_DEBUG) ifeq ($(PROCESSOR_ARCHITECTURE),AMD64) CFLAGS+=-m64 else CFLAGS+=-m32 endif CFLAGS+=-march=$(MARCH) CFLAGS+=-pipe CFLAGS+=-Wno-unused-label -Wno-unused-function CFLAGS+=-Wno-unused-parameter -Wno-unused-variable CFLAGS+=-Wno-dollar-in-identifier-extension CFLAGS+=-Wno-language-extension-token CFLAGS+=-Wno-parentheses-equality CFLAGS_DEBUG+=-g -O0 release: CFLAGS+=$(CFLAGS_RELEASE) release: CFLAGS+=-fno-math-errno -fno-exceptions release: CFLAGS+=-fno-unwind-tables -fno-asynchronous-unwind-tables release: CFLAGS+=-O3 -fno-ident -fdata-sections -ffunction-sections ifneq ($(FLTO),) release: CFLAGS+=-flto endif debug: CFLAGS+=$(CFLAGS_DEBUG) ifeq ($(PROCESSOR_ARCHITECTURE),AMD64) ASFLAGS+=--64 else ASFLAGS+=--32 endif ASFLAGS_DEBUG+= release: ASFLAGS+=--strip-local-absolute debug: ASFLAGS+=$(ASFLAGS_DEBUG) ifeq ($(PROCESSOR_ARCHITECTURE),AMD64) GORCFLAGS+=/machine X64 endif GORCFLAGS+=/ni /o /d FROM_MAKEFILE GORCFLAGS_DEBUG=/d DEBUG debug: GORCFLAGS+=$(GORCFLAGS_DEBUG) ifeq ($(PROCESSOR_ARCHITECTURE),AMD64) else endif LDFLAGS+=-Wl,--subsystem,console LDFLAGS+=-Wl,--no-seh -Wl,--nxcompat ifeq ($(USE_RUNTIME),TRUE) LDFLAGS+=-Wl,--stack 2097152,2097152 endif LDFLAGS+=-pipe -nostdlib LDFLAGS+=-L . LDFLAGS+=-L "$(LIB_DIR)" ifneq ($(LD_SCRIPT),) LDFLAGS+=-T "$(LD_SCRIPT)" endif release: LDFLAGS+=-s -Wl,--gc-sections ifneq ($(FLTO),) release: LDFLAGS+=-flto endif debug: LDFLAGS+=$(LDFLAGS_DEBUG) debug: LDLIBS+=$(LDLIBS_DEBUG) ifeq ($(USE_RUNTIME),TRUE) ifeq ($(OBJ_CRT_START),) LDLIBSBEGIN+="$(LIB_DIR)\crt2.o" LDLIBSBEGIN+="$(LIB_DIR)\crtbegin.o" LDLIBSBEGIN+="$(LIB_DIR)\fbrt0.o" else LDLIBSBEGIN+=$(OBJ_CRT_START) endif endif LDLIBS+=-Wl,--start-group ifeq ($(LIBS_OS),) LDLIBS+=-ladvapi32 -lcomctl32 -lcomdlg32 -lcrypt32 LDLIBS+=-lgdi32 -lgdiplus -lkernel32 -lmswsock LDLIBS+=-lole32 -loleaut32 -lshell32 -lshlwapi LDLIBS+=-lwsock32 -lws2_32 -luser32 -luuid LDLIBS+=-lmsvcrt ifeq ($(USE_RUNTIME),TRUE) LDLIBS+=-lfb LDLIBS+=-lgcc -lmingw32 -lmingwex -lmoldname -lgcc_eh endif else LDLIBS+=$(LIBS_OS) endif LDLIBS+=-Wl,--end-group ifeq ($(LIBS_GCC),) LDLIBS_DEBUG+=-lgcc -lmingw32 -lmingwex -lmoldname -lgcc_eh else LDLIBS_DEBUG+=$(LIBS_GCC) endif ifeq ($(USE_RUNTIME),TRUE) ifeq ($(OBJ_CRT_END),) LDLIBSEND+="$(LIB_DIR)\crtend.o" else LDLIBSEND+=$(OBJ_CRT_END) endif endif OBJECTFILES_DEBUG+=$(OBJ_DEBUG_DIR)$(PATH_SEP) OBJECTFILES_RELEASE+=$(OBJ_RELEASE_DIR)$(PATH_SEP) $(OBJ_DEBUG_DIR)$(PATH_SEP): $(OBJ_RELEASE_DIR)$(PATH_SEP): release: $(BIN_RELEASE_DIR)$(PATH_SEP)$(OUTPUT_FILE_NAME) debug: $(BIN_DEBUG_DIR)$(PATH_SEP)$(OUTPUT_FILE_NAME) clean: $(DELETE_COMMAND) $(OBJ_RELEASE_DIR_MOVE)$(MOVE_PATH_SEP)*$(FILE_SUFFIX).c $(DELETE_COMMAND) $(OBJ_DEBUG_DIR_MOVE)$(MOVE_PATH_SEP)*$(FILE_SUFFIX).c $(DELETE_COMMAND) $(OBJ_RELEASE_DIR_MOVE)$(MOVE_PATH_SEP)*$(FILE_SUFFIX).asm $(DELETE_COMMAND) $(OBJ_DEBUG_DIR_MOVE)$(MOVE_PATH_SEP)*$(FILE_SUFFIX).asm $(DELETE_COMMAND) $(OBJ_RELEASE_DIR_MOVE)$(MOVE_PATH_SEP)*$(FILE_SUFFIX).o $(DELETE_COMMAND) $(OBJ_DEBUG_DIR_MOVE)$(MOVE_PATH_SEP)*$(FILE_SUFFIX).o $(DELETE_COMMAND) $(OBJ_RELEASE_DIR_MOVE)$(MOVE_PATH_SEP)*$(FILE_SUFFIX).obj $(DELETE_COMMAND) $(OBJ_DEBUG_DIR_MOVE)$(MOVE_PATH_SEP)*$(FILE_SUFFIX).obj $(DELETE_COMMAND) $(BIN_RELEASE_DIR_MOVE)$(MOVE_PATH_SEP)$(OUTPUT_FILE_NAME) $(DELETE_COMMAND) $(BIN_DEBUG_DIR_MOVE)$(MOVE_PATH_SEP)$(OUTPUT_FILE_NAME) createdirs: $(MKDIR_COMMAND) $(BIN_DEBUG_DIR_MOVE) $(MKDIR_COMMAND) $(BIN_RELEASE_DIR_MOVE) $(MKDIR_COMMAND) $(OBJ_DEBUG_DIR_MOVE) $(MKDIR_COMMAND) $(OBJ_RELEASE_DIR_MOVE) $(BIN_RELEASE_DIR)$(PATH_SEP)$(OUTPUT_FILE_NAME): $(OBJECTFILES_RELEASE) $(CC) $(LDFLAGS) $(LDLIBSBEGIN) $^ $(LDLIBS) $(LDLIBSEND) -o $@ $(BIN_DEBUG_DIR)$(PATH_SEP)$(OUTPUT_FILE_NAME): $(OBJECTFILES_DEBUG) $(CC) $(LDFLAGS) $(LDLIBSBEGIN) $^ $(LDLIBS) $(LDLIBSEND) -o $@ $(OBJ_RELEASE_DIR)$(PATH_SEP)%$(FILE_SUFFIX).o: $(OBJ_RELEASE_DIR)$(PATH_SEP)%$(FILE_SUFFIX).asm $(AS) $(ASFLAGS) -o $@ $< $(OBJ_DEBUG_DIR)$(PATH_SEP)%$(FILE_SUFFIX).o: $(OBJ_DEBUG_DIR)$(PATH_SEP)%$(FILE_SUFFIX).asm $(AS) $(ASFLAGS) -o $@ $< $(OBJ_RELEASE_DIR)$(PATH_SEP)%$(FILE_SUFFIX).asm: $(OBJ_RELEASE_DIR)$(PATH_SEP)%$(FILE_SUFFIX).c $(CC) $(EXTRA_CFLAGS) $(CFLAGS) -o $@ $< $(OBJ_DEBUG_DIR)$(PATH_SEP)%$(FILE_SUFFIX).asm: $(OBJ_DEBUG_DIR)$(PATH_SEP)%$(FILE_SUFFIX).c $(CC) $(EXTRA_CFLAGS) $(CFLAGS) -o $@ $< $(OBJ_RELEASE_DIR)$(PATH_SEP)%$(FILE_SUFFIX).c: src$(PATH_SEP)%.bas $(FBC) $(FBCFLAGS) $< $(CPREPROCESSOR_COMMAND) /release src$(MOVE_PATH_SEP)$*.c $(MOVE_COMMAND) src$(MOVE_PATH_SEP)$*.c $(OBJ_RELEASE_DIR_MOVE)$(MOVE_PATH_SEP)$*$(FILE_SUFFIX).c $(OBJ_DEBUG_DIR)$(PATH_SEP)%$(FILE_SUFFIX).c: src$(PATH_SEP)%.bas $(FBC) $(FBCFLAGS) $< $(CPREPROCESSOR_COMMAND) /debug src$(MOVE_PATH_SEP)$*.c $(MOVE_COMMAND) src$(MOVE_PATH_SEP)$*.c $(OBJ_DEBUG_DIR_MOVE)$(MOVE_PATH_SEP)$*$(FILE_SUFFIX).c $(OBJ_RELEASE_DIR)$(PATH_SEP)%$(FILE_SUFFIX).obj: src$(PATH_SEP)%.RC $(GORC) $(GORCFLAGS) /fo $@ $< $(OBJ_DEBUG_DIR)$(PATH_SEP)%$(FILE_SUFFIX).obj: src$(PATH_SEP)%.RC $(GORC) $(GORCFLAGS) /fo $@ $<
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
| |
|
|
| zamabuvaraeu | Дата: Пятница, 24.10.2025, 12:12 | Сообщение # 10 |
|
Полковник
Группа: Друзья
Сообщений: 173
Статус: Offline
| Значит генератор не нашёл исходников в каталоге src
|
| |
|
|
| haav | Дата: Пятница, 24.10.2025, 14:53 | Сообщение # 11 |
 Генералиссимус
Группа: Администраторы
Сообщений: 1436
Статус: Offline
| Цитата zamabuvaraeu (  ) Значит генератор не нашёл исходников в каталоге src Судя по всему , на твоей системе это работает. Но если каталоги отличаются , то будет как у меня (то есть нифига не будет работать). Зачем намертво зашиты пути в файле CreateMakefile.bas ? Если я меняю в этом файле пути на свои , то как минимум уже что-то находит. Как должна выполняться команда fbc -showincludes в файле CreateMakefile , если прописан твой путь к компилятору? Потом возникает проблема с fix-emitted-code.vbs и make выходит с ошибкой. И потом , из под make не создаются каталоги. Может их лучше создавать сразу из программы CreateMakefile.exe? В общем , программа требует тщательного тестирования, а пока это не работает.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
| |
|
|
| zamabuvaraeu | Дата: Пятница, 24.10.2025, 20:57 | Сообщение # 12 |
|
Полковник
Группа: Друзья
Сообщений: 173
Статус: Offline
| Обновил генератор (скачайте новую версию) и сделал небольшое видео https://rutube.ru/video....5rv8YYA
Цитата Зачем намертво зашиты пути в файле CreateMakefile.bas Чтобы было так: если не указан путь в параметре — пусть будет тот путь, что по умолчанию. Но если не нравится, то… Теперь удалил. Теперь путь нужно будет указывать всегда.
Цитата Потом возникает проблема с fix-emitted-code.vbs Он выключен по умолчанию. Если включено, то устанавливаем «-fix false». Какая ошибка вызывается?
Цитата из под make не создаются каталоги Какую ошибку показывает? Цитата Может их лучше создавать сразу из программы CreateMakefile.exe? Ну, добавил параметр -createdirs true
|
| |
|
|
| haav | Дата: Суббота, 25.10.2025, 05:49 | Сообщение # 13 |
 Генералиссимус
Группа: Администраторы
Сообщений: 1436
Статус: Offline
| Я использовал make (не mingw32-make). Отсюда и вырастали все проблемы. Нашел в своих папках mingw32-make, с ней вроде собирается. Даже не думал , что make будет так косячить с твоей программой. Всегда ей пользовался для любых нужд... Каких только ошибок не насмотрелся , пока использовал стандартную make из поставки Mingw32 с твоей программой. Вот например:
Код cmd.exe /c echo cscript.exe //nologo fix-emitted-code.vbs /release src\\main.c "elease" не является внутренней или внешней
Или такая:
Код Makefile:231: *** target pattern contains no '%'. Stop.
Хорошо , что теперь пашет. И извини , я спорол косяка и зря тебе морочил голову.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
| |
|
|
|