Comments 32
Снимаю шляпу, автор знает толк в извращениях =)
+11
Там самое веселое — зависимости поразгребать, руками. Помню долго искал этот клятый tzcode, ибо нету давно того сайта где он жил. Хвала гитхабу — не дал пропасть…
и только потом — шаманства из ридми ;-)
sudo zypper install libuuid-devel libicu-devel
cd tzcode
make
sudo make install
cd ..
cd opencflite-476.19.0
./configure
make
sudo make install
cd ..
и только потом — шаманства из ридми ;-)
+1
Все очень хорошо, советую использовать CMake и выкинуть cygwin.
+5
Я в статье не нашел упоминания cygwin, вы о чем? Про wine?
0
Есть пара батников под спойлерами, внутри sed и awk. Только они из MinGW а не из CygWin.
0
Ок, перепутал mingw и cygwin. У меня сложилось впечатление, что одной из причин, толкнувшей вас на эксперименты, были сложности с развертыванием этой среды на всех сборочных машинах.
0
На самом деле я огород начал городить именно для того чтобы не разводить много сборочных машин.
Сначала их было две — мой ноут на котором все собирается до сих пор, и мак-мини под столом чтобы этот клятый PackageMaker попинать мышой over VNC. Однако после того как под столом мак-мини стало три, пришлось смотреть на хакинтош ;-)
Я даже одно время собирался сборку под мак выкинуть в облако — но пока не сложилось. И когда уже Apple догадается ферму под своими маками раздавать как микрософт — свой Azure…
И вот благодаря микрософту и «компилятору нужна виста+» — перебрался на хост из виртуалок. Компиляет, что забавно. Эдакий странный казус, самому смешно.
Сначала их было две — мой ноут на котором все собирается до сих пор, и мак-мини под столом чтобы этот клятый PackageMaker попинать мышой over VNC. Однако после того как под столом мак-мини стало три, пришлось смотреть на хакинтош ;-)
Я даже одно время собирался сборку под мак выкинуть в облако — но пока не сложилось. И когда уже Apple догадается ферму под своими маками раздавать как микрософт — свой Azure…
И вот благодаря микрософту и «компилятору нужна виста+» — перебрался на хост из виртуалок. Компиляет, что забавно. Эдакий странный казус, самому смешно.
0
Кстати на маке совершенно не обязательно использовать графический PackageMaker. Есть еще как минимум консольные pkgbuild и pkgutil, когда я занимался разработкой на маке использовал их, плюс Jenkins для управления сборочной фермой из маков.
0
Но вот то что cl.exe внезапно оказался not valid Win32 image — это был удар.Для справки. В PE-заголовке есть поле «версия подсистемы», системный загрузчик в принципе отказывается загружать exe-шники, у которых это поле больше версии системы, именно с ошибкой «not valid Win32 image». Лечится editbin /subsystem:console,5.0 cl.exe (warning LNK4241 можно игнорировать). 2012-й студии под рукой нет, cl.exe из 2013-й студии после такой операции не работает уже по другой, более ясной причине «Точка входа в процедуру InitializeCriticalSectionEx не найдена в библиотеке DLL KERNEL32.dll.» — и действительно, такая API-функция появилась только в Vista.
+2
а почему не cmake?
для сборки достаточно 2 комманд, открывать visual studio не надо
cmake -G «имя генератора» «dir»
cmake --build «dir» --target «tgt» --config «cfg»
boost ищется так: find_package(BOOST) (можно задать версию, если не в стандартной локации, то чуть длинее)
в вашем случае правда один раз придётся задать настройки всем компиляторам, т.к. у вас они лежат в отдельных директориях
из коробки поддерживает все версии Visual Studio
Visual Studio 6
Visual Studio 7
Visual Studio 7 .NET 2003
Visual Studio 8 2005
Visual Studio 9 2008
Visual Studio 10 2010
Visual Studio 11 2012
Visual Studio 12 2013
и тд
www.cmake.org/cmake/help/v3.0/manual/cmake-generators.7.html
Visual Studio 7
Visual Studio 7 .NET 2003
Visual Studio 8 2005
Visual Studio 9 2008
Visual Studio 10 2010
Visual Studio 11 2012
Visual Studio 12 2013
и тд
www.cmake.org/cmake/help/v3.0/manual/cmake-generators.7.html
для сборки достаточно 2 комманд, открывать visual studio не надо
cmake -G «имя генератора» «dir»
cmake --build «dir» --target «tgt» --config «cfg»
boost ищется так: find_package(BOOST) (можно задать версию, если не в стандартной локации, то чуть длинее)
в вашем случае правда один раз придётся задать настройки всем компиляторам, т.к. у вас они лежат в отдельных директориях
0
Если бы я это делал сейчас — я бы обязательно прицепил CMake, ну а менять то что работало как часы с 2006 года… я лучше этот кошмар из говна и палок еще потерплю ;-)
К слову, эти палки выглядят так:
И так 14 (!) раз. Потому что меняется все — порядок, наличие, форма записи, и прочее.
Под виндой например первых пара каталогов в списке должны быть именно так, иначе вся эта конструкция падает в произвольных местах:
Из ~75К мейкфайлов — 65 180 байт это как раз список путей и адобоспецифических флажков. И каждая новая версия — добавляет еще 10-15К ;-)
К слову, эти палки выглядят так:
OSSDK=/Developer/SDKs/MacOSX10.5.sdk
ASDK=/Developer/SDKs/id8.0sdk
OSX_MIN=10.5
CFLAGS+=-DMACOSX_SDKVERSION=1050 -DSUITE_VER=CS6
ASDK_INCLUDE=-I$(ASDK)/build/mac/Release/SDK/include
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/widgetbin/tooltips
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/widgetbin/menus
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/widgetbin/dialogs
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/widgetbin/dialogs/selectabledialogs
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/widgetbin/treeview
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/widgetbin/events
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/widgetbin/includes
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/widgetbin/utils
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/widgetbin/view
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/widgetbin/pageitems
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/widgetbin/pageitems/basicinterfaces
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/widgetbin/trackers
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/widgetbin/graphics
ASDK_INCLUDE+=-I$(ASDK)/external/dva/third_party
ASDK_INCLUDE+=-I$(ASDK)/external/dva/third_party/boost_libraries
ASDK_INCLUDE+=-I$(ASDK)/external/dva/third_party/adobe_source_libraries
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/publiclib/objectmodel
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/publiclib/streaming
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/publiclib/localization
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/publiclib/commondata
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/publiclib/strings
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/publiclib/structure
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/publiclib/foundation
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/publiclib/plugins
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/publiclib/commands
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/publiclib/events
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/publiclib/files
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/publiclib/utils
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/publiclib/statics
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/publiclib/resourcedefs
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/publiclib/measurementsystem
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/publiclib/pageitems
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/publiclib/pageitems/basicinterfaces
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/publiclib/scripting
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/publiclib/graphics
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/publiclib/links
ASDK_INCLUDE+=-I$(ASDK)/source/public/libs/publiclib/messaging
ASDK_INCLUDE+=-I$(ASDK)/source/public/includes
ASDK_INCLUDE+=-I$(ASDK)/source/public/interfaces/sharedcontent
ASDK_INCLUDE+=-I$(ASDK)/source/public/interfaces/colormgmt
ASDK_INCLUDE+=-I$(ASDK)/source/public/interfaces/cjk
ASDK_INCLUDE+=-I$(ASDK)/source/public/interfaces/interactive
ASDK_INCLUDE+=-I$(ASDK)/source/public/interfaces/interactive/ui
ASDK_INCLUDE+=-I$(ASDK)/source/public/interfaces/server
ASDK_INCLUDE+=-I$(ASDK)/source/public/interfaces/preflight
ASDK_INCLUDE+=-I$(ASDK)/source/public/interfaces/tables
ASDK_INCLUDE+=-I$(ASDK)/source/public/interfaces/layout
ASDK_INCLUDE+=-I$(ASDK)/source/public/interfaces/xmedia
ASDK_INCLUDE+=-I$(ASDK)/source/public/interfaces/utils
ASDK_INCLUDE+=-I$(ASDK)/source/public/interfaces/architecture
ASDK_INCLUDE+=-I$(ASDK)/source/public/interfaces/incopy
ASDK_INCLUDE+=-I$(ASDK)/source/public/interfaces/workgroup
ASDK_INCLUDE+=-I$(ASDK)/source/public/interfaces/text
ASDK_INCLUDE+=-I$(ASDK)/source/public/interfaces/graphics
ASDK_INCLUDE+=-I$(ASDK)/source/public/interfaces/contentdropper
ASDK_INCLUDE+=-I$(ASDK)/source/public/interfaces/ui
ASDK_INCLUDE+=-I$(ASDK)/source/open/includes
ASDK_INCLUDE+=-I$(ASDK)/source/open/includes/interactive
ASDK_INCLUDE+=-I$(ASDK)/source/open/includes/widgets
ASDK_INCLUDE+=-I$(ASDK)/source/open/includes/layout
ASDK_INCLUDE+=-I$(ASDK)/source/open/includes/utils
ASDK_INCLUDE+=-I$(ASDK)/source/open/includes/architecture
ASDK_INCLUDE+=-I$(ASDK)/source/open/includes/text
ASDK_INCLUDE+=-I$(ASDK)/source/open/includes/ui
ASDK_INCLUDE+=-I$(ASDK)/source/open/interfaces/interactive
ASDK_INCLUDE+=-I$(ASDK)/source/open/interfaces/preflight
ASDK_INCLUDE+=-I$(ASDK)/source/open/interfaces/layout
ASDK_INCLUDE+=-I$(ASDK)/source/open/interfaces/architecture
ASDK_INCLUDE+=-I$(ASDK)/source/open/interfaces/incopy
ASDK_INCLUDE+=-I$(ASDK)/source/open/interfaces/text
ASDK_INCLUDE+=-I$(ASDK)/source/open/interfaces/graphics
ASDK_INCLUDE+=-I$(ASDK)/source/open/interfaces/ui
ASDK_INCLUDE+=-I$(ASDK)/source/precomp/gcc
ASDK_INCLUDE+=-I$(ASDK)/source/precomp/common
ASDK_INCLUDE+=-I$(ASDK)/source/sdksamples/common
ODFRC_DEFS=-d ID_CS6
CFLAGS+=-fmessage-length=0 -pipe -O2 -fpascal-strings
CFLAGS+=-fasm-blocks
#InDesign specific
CFLAGS+=-Wno-trigraphs -Wreturn-type -Woverloaded-virtual -Wmissing-braces -Wparentheses
CFLAGS+=-Wunused-function -Wunused-label -Wunused-value -Wshadow -Wno-deprecated-declarations
CFLAGS+=-Wchar-subscripts -Wimplicit -Wsequence-point -Winit-self -Wmissing-field-initializers
CFLAGS+=-Wpointer-arith -Wcast-align -Wpacked
CFLAGS=-fvisibility=hidden -fvisibility-inlines-hidden -fno-threadsafe-statics
#Defines
CFLAGS+=-DMACINTOSH -DBIB_NO_THROW -DMACTEL_SKIP
#Includes
CFLAGS+=-I$(OSSDK)/Developer/Headers/FlatCarbon
CFLAGS+=$(ASDK_INCLUDE)
#Frameworks
CFLAGS+=-F$(ASDK)/build/mac/release/packagefolder/contents/macos
CFLAGS+=-F$(ASDK)/build/mac/release/packagefolder/contents/Frameworks
# odfrc
ODFRC=$(ASDK)/devtools/bin/odfrc-cmd
ODFRC_DEFS+=-d NDEBUG -d MACINTOSH -d __GNUC__
LDFLAGS+=-L$(ASDK)/build/mac/release/packagefolder/contents/macos/libs
LDFLAGS+=-F$(ASDK)/build/mac/release/packagefolder/contents/macos
LDFLAGS+=-F$(ASDK)/build/mac/release/packagefolder/contents/Frameworks
LDFLAGS+=-framework InDesignModel
LDFLAGS+=-Wl,-executable_path -Wl,$(ASDK)/build/mac/Release/packagefolder/contents/macos/
LDFLAGS+=-lPublicPlugIn
LDFLAGS+=-Wl,-dead_strip
LDFLAGS+=-Wl,-single_module
Rez=/Developer/Tools/Rez
RezFlags=-o $@ -d SystemSevenOrLater=1 -useDF -script Roman $(CFLAGS) $(ASDK)/samplecode/common/includes/MachOMacrezXcode.h
ifeq (x64,$(ARCH))
CFLAGS+=-arch x86_64
LDFLAGS+=-arch x86_64 -dynamiclib
RezFlags+=-arch x86_64
else
CFLAGS+=-arch i386
LDFLAGS=-arch i386 -dynamiclib
RezFlags+=-arch i386
endif
И так 14 (!) раз. Потому что меняется все — порядок, наличие, форма записи, и прочее.
Под виндой например первых пара каталогов в списке должны быть именно так, иначе вся эта конструкция падает в произвольных местах:
# FIRST LINE IS FOR odfrc AS IT DOESN'T SUPPORTS SPACES IN PATHS
ASDK_INCLUDE=$(AdobeSDK)\source\precomp\common;$(AdobeSDK)\source\precomp\msvc
ASDK_INCLUDE:=$(ASDK_INCLUDE);$(AdobeSDK)\source\public\includes
Из ~75К мейкфайлов — 65 180 байт это как раз список путей и адобоспецифических флажков. И каждая новая версия — добавляет еще 10-15К ;-)
+3
я надеюсь с всего этого вороха забот Вы хоть на печеньки имеете?
0
14 раз вас впечатлили? ;-)
Это делается один раз в полгода, не чаще, да и дел на вечер каждый раз. А что не на вечер то хуже — надо новый облачный индизайн поставить и проверить, а работает ли. Если да — то поправить инсталляторы (два штука), и все, «запортировал».
Последний раз было весело с примером — в cs6 он изменился, там перекрывать надо было на два метода больше. А если не — то дефолтная имплементация мастерски обрабатывала только первый дропнутый на индезигн файл, и все. А все остальные добавляла в линки тихонечко. Вот это был квест на неделю, хех.
Ну, вот в этот раз слегка вышел за рамки одного вечера — зато есть тема ;-)
Это делается один раз в полгода, не чаще, да и дел на вечер каждый раз. А что не на вечер то хуже — надо новый облачный индизайн поставить и проверить, а работает ли. Если да — то поправить инсталляторы (два штука), и все, «запортировал».
Последний раз было весело с примером — в cs6 он изменился, там перекрывать надо было на два метода больше. А если не — то дефолтная имплементация мастерски обрабатывала только первый дропнутый на индезигн файл, и все. А все остальные добавляла в линки тихонечко. Вот это был квест на неделю, хех.
Ну, вот в этот раз слегка вышел за рамки одного вечера — зато есть тема ;-)
0
вам похоже возится со скриптами вполне нравится :)
я бы уже во второй раз вернувшись к такому проекту, покромсал бы без жалости вдоль и поперёк, чтобы максимально упростить мигрирование на новую версию
я бы уже во второй раз вернувшись к такому проекту, покромсал бы без жалости вдоль и поперёк, чтобы максимально упростить мигрирование на новую версию
0
Это вы еще скрипты InnoSetup не видели, вот где ад и израиль.
и таких ужастиков на 250К кода ;-)
function GetPathByCOM(product: string; clsid: string; is32bit: boolean) : string;
var
v: string;
k, e, k1: string;
i: integer;
begin
k := 'CLSID\{' + clsid + '}\LocalServer32';
k1:= 'CLSID\{' + clsid + '}\InprocServer32';
e := '{pf}';
if IsWin64 and Is64BitInstallMode then begin
if is32bit then begin
e := '{pf32}';
k := 'Wow6432Node\' + k;
k1:= 'Wow6432Node\' + k1;
end;
end;
if RegQueryStringValue(HKEY_CLASSES_ROOT, k, '', v) then begin
i := Pos('/', v);
if i > 0 then v := Trim(Copy(v, 1, i - 1));
Result:= ExtractFilePath(v);
end else if RegQueryStringValue(HKEY_CLASSES_ROOT, k1, '', v) then begin
i := Pos('/', v);
if i > 0 then v := Trim(Copy(v, 1, i - 1));
Result:= ExtractFilePath(v);
end else
Result := ExpandConstant(e) + '\Adobe\' + product + '\';
end;
function GetPathByApp(product: string; ver: string; is32bit: boolean): string;
var
v: string;
k, e: string;
i: integer;
begin
k := 'SOFTWARE\Adobe\' + ver + '\ApplicationPath';
e := '{pf}';
if IsWin64 and Is64BitInstallMode then begin
if is32bit then begin
e := '{pf32}';
k := 'SOFTWARE\Wow6432Node\Adobe\' + ver + '\ApplicationPath';
end;
end;
if RegQueryStringValue(HKEY_LOCAL_MACHINE, k, '', v)
then begin
i := Pos('/', v);
if i > 0 then begin
v := Trim(Copy(v, 1, i - 1));
v:= ExtractFilePath(v);
end;
Result:= v;
end else
Result := ExpandConstant(e) + '\Adobe\' + product + '\';
end;
function GetPathByShell(product: string; ver: string; is32bit: boolean): string;
var
v, e, k: string;
i: integer;
begin
k := ver + '\shell\launch\command';
e := '{pf}'; \
if IsWin64 and Is64BitInstallMode then begin
if is32bit then begin
e := '{pf32}';
k := 'Wow6432Node\' + k;
end;
end;
if RegQueryStringValue(HKEY_CLASSES_ROOT, k, '', v)
then begin
i := Pos('/', v);
if i > 0 then v := Trim(Copy(v, 1, i - 1));
Result:= ExtractFilePath(v);
end else
Result := ExpandConstant(e) + '\Adobe\' + product + '\';
end;
function GetPathBySetup2(product: string; ver: string; is32bit: boolean): string;
var
v, e, k: string;
begin
k := 'SOFTWARE\Adobe\' + ver;
e := '{pf}';
if IsWin64 and Is64BitInstallMode then begin
if is32bit then begin
e := '{pf32}';
k := 'SOFTWARE\Wow6432Node\Adobe\' + ver;
end;
end;
if RegQueryStringValue(HKEY_LOCAL_MACHINE, k, 'InstallPath', v)
then begin
Result:= v;
end else
Result := ExpandConstant(e) + '\Adobe\' + product + '\';
end;
function GetPathBySetup(product: string; ver: string; is32bit: boolean): string;
begin
Result := GetPathBySetup2(product, ver + '\Installer', is32bit);
end;
function GetPathByCOMsAnd32bit(product: string; clsid: string; clsi2: string): string;
var
v: string;
k1, k2, e: string;
begin
k1 := 'CLSID\{' + clsid + '}\LocalServer32';
k2 := 'CLSID\{' + clsi2 + '}\LocalServer32';
e := '{pf}';
if IsWin64 and Is64BitInstallMode then begin
e := '{pf32}';
k1 := 'Wow6432Node\' + k1;
k2 := 'Wow6432Node\' + k2;
end;
if RegQueryStringValue(HKEY_CLASSES_ROOT, k1, '', v)
then
Result := ExtractFilePath(v)
else if RegQueryStringValue(HKEY_CLASSES_ROOT, k2, '', v) then
Result := ExtractFilePath(v)
else
Result := ExpandConstant(e) + '\Adobe\' + product + '\';
end;
function isAdobeAvailable(product: string; is32bit: boolean) : Boolean;
var
k: string;
begin
k := 'SOFTWARE\Adobe\' + product;
if IsWin64 and Is64BitInstallMode then begin
if is32bit then begin
k := 'SOFTWARE\Wow6432Node\Adobe\' + product;
end;
end;
if RegKeyExists(HKEY_LOCAL_MACHINE, k)
then begin
Result:=True;
end;
end;
и таких ужастиков на 250К кода ;-)
0
Оно и так декларативное — вот к примеру
Однако это не отменяет кучу функций CheckedXXX + GetXXXX ;-)
А в них надо проверить что
— соответствующий (в данном случае) индезигн сервер установлен
— архитектура соответствует
— установка этого компонента не отменена на предыдущем шаге
— реальный путь надо найти в реестре, а он зависит от версии адобовского инсталлятора.
Вот и получается много.
; CS6 64bit
Source: ..\..\image\bin\x64\cs6\VDP.pln; DestDir: {code:GetS6Path|{pf}\Adobe\Adobe InDesign Server CS6\}\Plug-ins; DestName: VDP.pln; Flags: ignoreversion overwritereadonly replacesameversion 64bit; Check: CheckedIndesignS6
Source: ..\..\image\bin\x64\cs6\(VDP Resources)\idrc_CLST\*.*; DestDir: {code:GetS6Path|{pf}\Adobe\Adobe InDesign Server CS6\}\Plug-ins\(VDP Resources)\idrc_CLST; Flags: ignoreversion overwritereadonly replacesameversion 64bit; Check: CheckedIndesignS6
...
; CS6 32bit in 64bit
Source: ..\..\image\bin\x86\cs6\VDP.pln; DestDir: {code:GetS6Path_32in64|{pf32}\Adobe\Adobe InDesign Server CS6\}\Plug-ins; DestName: VDP.pln; Flags: ignoreversion overwritereadonly replacesameversion 64bit; Check: CheckedIndesignS6_32in64
Source: ..\..\image\bin\x86\cs6\(VDP Resources)\idrc_CLST\*.*; DestDir: {code:GetS6Path_32in64|{pf32}\Adobe\Adobe InDesign Server CS6\}\Plug-ins\(VDP Resources)\idrc_CLST; Flags: ignoreversion overwritereadonly replacesameversion 64bit; Check: CheckedIndesignS6_32in64
...
; CS6 32bit
Source: ..\..\image\bin\x86\cs6\VDP.pln; DestDir: {code:GetS6Path|{pf}\Adobe\Adobe InDesign Server CS6\}\Plug-ins; DestName: VDP.pln; Flags: ignoreversion overwritereadonly replacesameversion; Check: CheckedIndesignS6
Source: ..\..\image\bin\x86\cs6\(VDP Resources)\idrc_CLST\*.*; DestDir: {code:GetS6Path|{pf}\Adobe\Adobe InDesign Server CS6\}\Plug-ins\(VDP Resources)\idrc_CLST; Flags: ignoreversion overwritereadonly replacesameversion; Check: CheckedIndesignS6
...
Однако это не отменяет кучу функций CheckedXXX + GetXXXX ;-)
А в них надо проверить что
— соответствующий (в данном случае) индезигн сервер установлен
— архитектура соответствует
— установка этого компонента не отменена на предыдущем шаге
— реальный путь надо найти в реестре, а он зависит от версии адобовского инсталлятора.
Вот и получается много.
0
Cmake не делает сборку!
Он всего лишь создаёт проект для соответствующей студии.
С ключиком --build он же дёргает winbuilder, чтобы соответствующий проект собрался.
Но если нужный компилятор cl.exe не запускается под виндой, cmake ничуть этому не поможет!
Он всего лишь создаёт проект для соответствующей студии.
С ключиком --build он же дёргает winbuilder, чтобы соответствующий проект собрался.
Но если нужный компилятор cl.exe не запускается под виндой, cmake ничуть этому не поможет!
0
Раз уж Вы собираете по Wine, почему бы не попробовать под ReactOS?
-3
Не понял к чему автор вспомнил Windows 8. На семёрке прекрасно работают все студии от 2003 до 2013. Да и вариант поднять билд-сервер в амазоновском облаке — тоже выглядит разумнее, чем городить на локальном линуксе вайновую билд-платформу.
0
Так что из Visual Studio работает? devenv или cl.exe?
0
Вы уж меня извините, но текст читать что-то уж совсем сложно
+1
А расскажите подробнее, как в итоге «завели» компилятор от 2012-й студии под вайном?
Я вот пробую — ничего не выходит.
Скопировал папку студии, кинул «родную» либу msvcr110 — и дальше ступор.
без параметров — запускается.
Microsoft ® C/C++ Optimizing Compiler Version 17.00.61030 for x86
Copyright © Microsoft Corporation. All rights reserved.
С ключиком /help — работает.
Но при попытке запустить реальную компиляцию — вылетает с исключением Unhandled exception 0xc0000417
Пробовал с окружениями как 32, так и 64 бита, результат одинаково отрицательный
Я вот пробую — ничего не выходит.
Скопировал папку студии, кинул «родную» либу msvcr110 — и дальше ступор.
без параметров — запускается.
Microsoft ® C/C++ Optimizing Compiler Version 17.00.61030 for x86
Copyright © Microsoft Corporation. All rights reserved.
С ключиком /help — работает.
Но при попытке запустить реальную компиляцию — вылетает с исключением Unhandled exception 0xc0000417
Пробовал с окружениями как 32, так и 64 бита, результат одинаково отрицательный
0
Я в папку с компилятором досыпал таких файлов (все — 32битные!)
msvcp110.dll
msvcr110.dll
vccorlib110.dll
а также досыпал туда же
RcDll.dll
И добавил в путь не саму папку с компилятором а вижловую Common7\IDE. В вайне сказал что имитируется Win7.
Вроде все…
Рекомендую еще запускать это из wineconsole. Саму wineconsole — из терминала, и в терминал поглядывать — оно там пишет чего не хватает.
msvcp110.dll
msvcr110.dll
vccorlib110.dll
а также досыпал туда же
RcDll.dll
И добавил в путь не саму папку с компилятором а вижловую Common7\IDE. В вайне сказал что имитируется Win7.
Вроде все…
Рекомендую еще запускать это из wineconsole. Саму wineconsole — из терминала, и в терминал поглядывать — оно там пишет чего не хватает.
+1
Да, все сходится.
Увы, не функционирует.
Возможно, как-то связано еще с характеристиками системы (проц, ядерность и т.д.)
Увы, не функционирует.
Возможно, как-то связано еще с характеристиками системы (проц, ядерность и т.д.)
0
На всякий случай, Wine prefix architecture = 64bit Win7, но cl.exe строго 32битный. Или VC/bin/cl.exe или VC/bin/x86_amd64/cl.exe. Собственно, cl.exe из VC/amd64 также запускается с ключом /help, но я им не пользуюсь по историческим причинам и потому далее даже не смотрел.
Что еще интересного может быть — затрудняюсь, спрашивайте.
Машинка стандартная 4x Intel® Core(TM) i5-2400 CPU @ 3.10GHz, так что не в ней дело судя по всему.
vik@pc:~> rpm -qa | grep wine
wine-mp3-1.1.39-12.12.i586
wine-gecko-2.24-43.1.noarch
wine-mono-4.5.2-9.6.noarch
wine-32bit-1.7.16-334.1.x86_64
wine-1.7.16-334.1.x86_64
Даавно не апдейтил, да…
Что еще интересного может быть — затрудняюсь, спрашивайте.
Машинка стандартная 4x Intel® Core(TM) i5-2400 CPU @ 3.10GHz, так что не в ней дело судя по всему.
vik@pc:~> rpm -qa | grep wine
wine-mp3-1.1.39-12.12.i586
wine-gecko-2.24-43.1.noarch
wine-mono-4.5.2-9.6.noarch
wine-32bit-1.7.16-334.1.x86_64
wine-1.7.16-334.1.x86_64
Даавно не апдейтил, да…
+1
Вот он, ключевой момент:
wine-1.7
У меня стояла стоковая 1.6.
Апгрейда хватило, чтобы всё взлетело!
Итого: создал префикс с 32-битной архитектурой (64 бита тоже пойдёт, я просто описываю, как завелось).
Скопировал в него из установленной студии папку Microsoft Visual Studio 11, а также Windows Kits.
В папку vc/bin доложил плюсовые рантайм-библиотеки (rt110).
Ну и скрипт-обёртка, чтобы запускать компилятор в нужном окружении:
Сейчас буду думать, как сделать билд-среду через cmake
(видимо, просто тупо запускать его так же из-под wine, покуда родная линуксовая версия справедливо считает, что с проектами MS Visual Studio ей уметь работать незачем)
wine-1.7
У меня стояла стоковая 1.6.
Апгрейда хватило, чтобы всё взлетело!
Итого: создал префикс с 32-битной архитектурой (64 бита тоже пойдёт, я просто описываю, как завелось).
Скопировал в него из установленной студии папку Microsoft Visual Studio 11, а также Windows Kits.
В папку vc/bin доложил плюсовые рантайм-библиотеки (rt110).
Ну и скрипт-обёртка, чтобы запускать компилятор в нужном окружении:
#!/bin/bash PROGRAMFILES="c:/Program Files" WSDK="$PROGRAMFILES/Microsoft Visual Studio 11.0" export WINEPREFIX="/home/alexey/wine2" export INCLUDE="$WSDK/VC/INCLUDE;$WSDK/VC/ATLMFC/INCLUDE;$PROGRAMFILES/Windows Kits/8.0/include/shared;$PROGRAMFILES/Windows Kits/8.0/include/um;$PROGRAMFILES/Windows Kits/8.0/include/winrt;" export LIB="$WSDK/VC/LIB;$WSDK/VC/ATLMFC/LIB;$PROGRAMFILES/Windows Kits/8.0/lib/win8/um/x86;" export LIBPATH="$WSDK/VC/LIB;$WSDK/VC/ATLMFC/LIB;" export WINEPATH="c:/windows;c:/windows/system32;$WSDK/Common7/IDE;$WSDK/VC/bin;" wine cl.exe $@
Сейчас буду думать, как сделать билд-среду через cmake
(видимо, просто тупо запускать его так же из-под wine, покуда родная линуксовая версия справедливо считает, что с проектами MS Visual Studio ей уметь работать незачем)
0
Only those users with full accounts are able to leave comments. Log in, please.
Как я стенд для сборки с windows на wine мигрировал