Size: a a a

2021 June 09

V

Vladimir in pro.buildsystems
Спасибо. Собрал статическую либу под разные архитектуры для osx и iOS смотрю размеры разные. Так что скорее всего они не взаимно заменимые.
источник

C

Chuvi in pro.buildsystems
Проверьте лучше на практике
источник

V

Vladimir in pro.buildsystems
Да идеально было бы линканутся к приложению и запустить его. Но нету такой возможности пока.
источник
2021 June 10

AS

Anatoly Shirokov in pro.buildsystems
ребят, а кто имеет опыт работы с mingw? я пытаюсь слинковаться в рамках mingw сборки с сишной sybase библиотекой, но получаю unresolved:
cmd.exe /C "cd . && C:\msys64\mingw32\bin\c++.exe -g  CMakeFiles/rdt.dir/main.cpp.obj -o rdt.exe -Wl,--out-implib,librdt.dll.a -Wl,--major-image-version,0,--minor-image-version,0  TextUtils/libtextutils.a  C:/Sybase/OCS-15_0/lib/libsybcs.lib  C:/Sybase/OCS-15_0/lib/libsybct.lib  -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cmd.exe /C "cd /D D:\rdt\example\_out\build\mingw32-Debug && C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noprofile -executionpolicy Bypass -file D:/rdt/vcpkg/scripts/buildsystems/msbuild/applocal.ps1 -targetBinary D:/rdt/example/_out/build/mingw32-Debug/rdt.exe -installedDir D:/rdt/vcpkg/installed/x86-mingw-static/debug/bin -OutVariable out""
 C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.3.0/../../../../i686-w64-mingw32/bin/ld.exe: TextUtils/libtextutils.a(TextUtils.cpp.obj): in function `ZN13TextConverter7ConvertEP10_cscontextP9_cslocaleRKNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEERNS5_IcS6_IcESaIcEEE':
 D:\rdt\example\_out\build\mingw32-Debug/../../../TextUtils/TextUtils.cpp:74: undefined reference to `cs_convert'
 C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.3.0/../../../../i686-w64-mingw32/bin/ld.exe: TextUtils/libtextutils.a(TextUtils.cpp.obj): in function `ZN13TextConverter7ConvertEP10_cscontextP9_cslocaleRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS5_IwS6_IwESaIwEEE':
 D:\rdt\example\_out\build\mingw32-Debug/../../../TextUtils/TextUtils.cpp:116: undefined reference to `cs_convert'
D:\rdt\example\_out\build\mingw32-Debug\collect2.exe : error : ld returned 1 exit status
 ninja: build stopped: subcommand failed.

по идее, для mingw прозрачны сишные либы собранные под msvc.
источник

AS

Anatoly Shirokov in pro.buildsystems
dumpbin-ом снял все символы из libsybcs, libsybct: https://pastebin.com/Q0UN03CN
источник

AS

Anatoly Shirokov in pro.buildsystems
экспортируется _cs_convert
источник

AS

Anatoly Shirokov in pro.buildsystems
Version      : 0
 Machine      : 14C (x86)
 TimeDateStamp: 4E4A64BF Tue Aug 16 15:38:23 2011
 SizeOfData   : 0000001C
 DLL name     : libsybcs.dll
 Symbol name  : _cs_convert@24
 Type         : code
 Name type    : undecorate
 Hint         : 22
 Name         : cs_convert
источник

EP

Egor Pugin in pro.buildsystems
вот это stdcall? у импорта он соблюдается?
источник

W🦊

Wohlstand 🦊🇷🇺... in pro.buildsystems
Статические библиотеки, собранные на MSVC, не совместимы с MINGW. Если это DLL, то надо сначала из DLL сгенерировать .a-файл, который можно будет смело линковать. Главное, чтобы ABI было совместимым, чистый Си в этом плане превосходит всех
источник

W🦊

Wohlstand 🦊🇷🇺... in pro.buildsystems
Потом из этого создаётся DEF-файл, и дальше по нему надо сгенерировать .a-файл, т.н. implib, который будет указывать на оригинальный dll
источник

AS

Anatoly Shirokov in pro.buildsystems
Спасибо большое! Займусь этим
источник

AS

Anatoly Shirokov in pro.buildsystems
Еще раз благодарю за хинт! Сделал def файл из dll, и подправил условия препроцессора, чтобы установить правильную calling convension __stdcall. Рецепт создания import library:
call gendef libsybct.dll // создаст libsybct.def 
call dlltool -d libsybct.def -D libsybct.dll -l libsybct.a
источник

AB

Aleksei Budyakov in pro.buildsystems
Не подскажите какие сейчас best practice conan + cmake ?
Там ведь можно через таргетный подход, можно сделать чтобы пакеты через find_package юзались. Вообщем есть вариации.
И еще вроде видел cmake-овский модуль для использования conan
источник

M

Maksim in pro.buildsystems
best practice можно посмотреть в репозитории https://github.com/conan-io/conan-center-index
источник

AS

Anatoly Shirokov in pro.buildsystems
ну, основной подход - это писать CMakeLists.txt так, чтобы он ничего ни о conan, ни о vcpkg не знал
источник

AB

Aleksei Budyakov in pro.buildsystems
Я там слегка потерялся. Куда смотреть?
источник

M

Maksim in pro.buildsystems
Это что касается написания рецептов. Рецепты пишут, насколько я знаю, под find_package и find_package_multi
источник

AB

Aleksei Budyakov in pro.buildsystems
То есть вот это плохо?
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup(TARGETS)

target_link_libraries(eigen_simple_ex PRIVATE CONAN_PKG::eigen project_warnings)
источник

AB

Aleksei Budyakov in pro.buildsystems
Я пока скорее к использованию. Рецепты позже буду учиться писать
источник

M

Maksim in pro.buildsystems
Да я бы так не сказал. Дело вкуса, наверное. Как использовать тот или иной пакет можно посмотреть, воспользовавшись командой, описанной здесь https://docs.conan.io/en/latest/reference/generators/markdown.html. Будет сгенерирован md файл  c информацией.
источник