http://mono-project.com/Cecil Мне б для сборки kde-шных биндингов пакет mono-cecil поиметь, чтоб заработала команда pkg-config mono-cecil --variable=assemblies_dir
Я специально модифицировал сборку mono, что бы cecil собирался из него, а не отдельным пакетом. присутствует /usr/lib/pkgconfig/cecil.pc. Если он не устраивает или в нём чего-то не хватает или надо обновить - сделаю, не вопрос. Посмотри на него с начала.
Нужно чтоб отработало на выбор pkg-config mono-cecil --variable=assemblies_dir или pkg-config cecil --variable=assemblies_dir KDE4 по ней определяет наличие cecil и записывает результат в переменную для дальнейшего использования.
в том и дело, что эта переменная нужна, если cecil установлен в нестандартные пути (хотя конечно можно считать что это у нас нестандартный cecil, хотя установлен стандартно). У нас cecil нормально находится через GAC. В csharp/CMakeLists.txt определяется наличие cecil и этого достаточно. Мне не понятно, почему макрос MACRO(INSTALL_GAC target) в cmake/modules/CSharpMacros.cmake - это же установка любых mono библионек(я правильно понял?) - основывется на cecil. Я думаю, переменные, куда устанавливать, должны вычислятся как-то иначе, на базе mono.pc например, или libdir например. в cmake/modules/CSharpMacros.cmake должно быть что-то типа этого. (обрати внимание - я подставил абсолютные пути вместо переменных - какие они должны быть в cmake не знаю) МACRO(INSTALL_GAC target) GET_CS_LIBRARY_TARGET_DIR() IF(NOT WIN32) INCLUDE(FindPkgConfig) PKG_SEARCH_MODULE(MONO_CECIL mono-cecil) PKG_SEARCH_MODULE(CECIL cecil) if(CECIL_FOUND OR MONO_CECIL_FOUND) #!!! ${CMAKE_CURRENT_BINARY_DIR} - должен быть /usr/lib (%_libdir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${GACUTIL_EXECUTABLE} -i ${CS_LIBRARY_TARGET_DIR}/${target}.dll -package 2.0 -root ${CMAKE_CURRENT_BINARY_DIR})") MAKE_DIRECTORY(${CMAKE_CURRENT_BINARY_DIR}/mono/) #!!! ${GAC_ASSEMBLY_DIR} - должен быть /usr/lib/mono/gac (%_monogacdir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mono/ DESTINATION ${GAC_ASSEMBLY_DIR} ) endif(CECIL_FOUND OR MONO_CECIL_FOUND) ELSE(NOT WIN32) INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${GACUTIL_EXECUTABLE} -i ${CS_LIBRARY_TARGET_DIR}/${target}.dll -package 2.0)") ENDIF(NOT WIN32) ENDMACRO(INSTALL_GAC target)
(In reply to comment #3) > #!!! ${GAC_ASSEMBLY_DIR} - должен быть /usr/lib/mono/gac (%_monogacdir) Меня устроит этот макрос. Единственное, если у кого-то еще придется патчить, удобнее в 1-м месте.
Кстати, в /usr/lib/pkgconfig/cecil.pc относительные пути написаны.
http://cvs.fedora.redhat.com/viewvc/devel/mono/mono-2.0-pcfiles.patch?view=markup
@prefix@/lib/mono на @libdir@/mono менять не надо - у нас используется именно @prefix@/lib/mono. или ты про что хотел сказать предыдущей ссылкой?
(In reply to comment #7) > или ты про что хотел сказать предыдущей ссылкой? 1. Что у них есть assemblies_dir в .pc 2. Что это может помочь поправить относительные пути (я ж не вдавался в подробности)
Оказывается, у нас специально убирается assemblies_dir http://sisyphus.ru/srpm/Sisyphus/mono/patches/1 Исправьте, пожалуйста.
Коллеги, проблема, как я вижу, выглядит так: 0. Cecil ещё пока официально не публичный, но в Альте мы впереди паровоза. Я уверен, что для этого есть свои причины. 1. Сторонние программы думают, что Cecil не публичный, поэтому хотят видеть assemblies_dir Моё предложение: а чего бы им не дать assemblies_dir=@prefix@/lib/mono/2.0 ?
Шабалин, с Новым Годом! ping! P.S. Хочешь, на тебя перевешаю?
да, я её возьму себе.(а то забыл совсем про неё). С новым годом всех! :)
kde-шных биндингов в сизифе.
В 4.1 тоже