CMake QT_LIBRARIES двоичный эквивалент - PullRequest
2 голосов
/ 30 июня 2011

Я хочу скопировать необходимые двоичные файлы на этапе после сборки.Существует ли версия этой переменной, в которой перечислены двоичные файлы, связанные с библиотеками?Что-то вроде ${QT_BINARIES}, в котором перечислены файлы специально для включенных модулей.

Ответы [ 2 ]

3 голосов
/ 30 июня 2011

Да, есть $ (QT_LIBRARIES), который будет содержать те Qt-dll, которые вы запросили (и их зависимости).

В сочетании с переменной $ (QT_BINARY_DIR) вы можете восстановить списокдвоичные файлы.Например, что-то вроде следующего (вырезано из моего собственного cmakefile после сборки) в Windows.

foreach( Qt_library ${QT_LIBRARIES} )
    get_filename_component( Qt_library_name ${Qt_library} NAME_WE )
    # Note: the following Regex works for me on windows, I am not sure if it 
    # fully portable.
    string( REGEX REPLACE "^lib(.*)" "\\1" Qt_library_name ${Qt_library_name} )

    set( Qt_shared_library ${QT_BINARY_DIR}/${Qt_library_name}.dll )
    if( EXISTS ${Qt_shared_library} )
        # Add it to the list of 'desired' qt-libraries for later installation
        list( APPEND Qt_Install_Libraries ${Qt_shared_library} )
    endif( EXISTS ${Qt_shared_library} )
endforeach( Qt_library ${QT_LIBRARIES} )
list( REMOVE_DUPLICATES Qt_Install_Libraries )
install( FILES ${Qt_Install_Libraries} DESTINATION bin COMPONENT ThirdParty )

В этом случае я использовал команду install в последней строке, но, конечно, вы могли бы заменить ее на копию.

1 голос
/ 01 июля 2011

Вам также следует рассмотреть возможность использования CMake BundleUtilities, которая анализирует предварительные требования к общей библиотеке, копирует необходимые «несистемные» библиотеки (и даже исправляет их для использования ссылок @executable_path на Mac) и оставляет ваш исполняемый файл готовым к работе со своими личными копиями необходимых библиотек.

См. Пример здесь: http://www.cmake.org/Wiki/BundleUtilitiesExample

Это особенно полезно для добавления только тех библиотек Qt, на которые действительно ссылается ваш исполняемый файл ...

После этой операции у вас остается «автономная» копия вашего связанного приложения (или исполняемого файла с общими библиотеками в том же каталоге), которую можно безопасно скопировать на другой компьютер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...