Подстановочные знаки времени компиляции в целях установки cmake - PullRequest
3 голосов
/ 12 апреля 2011

Я новичок в cmake и нахожу это очень расстраивающим.Я пытаюсь использовать подстановочные знаки в путях к файлам, которые оцениваются при запуске сборки, а не при ее создании.

Я создал сборку, которая использует SWIG для создания оболочек Java для некоторого кода C ++.Я могу написать команды для генерации собственного кода, его компиляции и создания рабочей общей библиотеки и даже использовать команду INSTALL для правильной установки этой общей библиотеки.Что я не могу понять, как это сделать, так это написать команду INSTALL, которая может скопировать все файлы * .java, сгенерированные SWIG, в то же место установки.

Кажется, что команда FILE GLOB cmake выполняет глобализацию, когдаcmake выполняется, а не когда сборка действительно выполняется.Конечно, когда cmake выполняется, SWIG еще не запущен, а файлы Java не существуют.

Есть ли способ сделать то, что я хочу?Я поступаю неправильно?Похоже, что это такая фундаментальная часть того, что нужно сделать Makefiles, я очень удивлен, что не нашел простого способа сделать это.

Ответы [ 2 ]

13 голосов
/ 13 апреля 2011

Предполагая, что оболочки Java находятся в текущем двоичном каталоге, вы можете использовать следующую команду install для копирования файлов Java при установке:

install(
    CODE "file( GLOB _GeneratedJavaSources \"${CMAKE_CURRENT_BINARY_DIR}/*.java\" )"
    CODE "file( INSTALL \${_GeneratedJavaSources} DESTINATION \"$ENV{HOME}\" )"
)

Форма CODE *Команда 1006 * используется для выполнения двух команд CMake при запуске цели установки.Первый собирает все сгенерированные файлы Java в вспомогательной переменной.Второй использует INSTALL форму команды file для копирования файлов.

1 голос
/ 12 апреля 2011

вы можете использовать install (SCRIPT swigInstaller.cmake) или install (DIRECTORY), которые поддерживают глобализацию файлов во время установки.Вы можете прочитать больше о команде установки по адресу:

http://cmake.org/cmake/help/cmake-2-8-docs.html#command:install

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