CMake помещает сгенерированные двоичные файлы в определенную структуру каталогов с активами - PullRequest
7 голосов
/ 08 февраля 2011

Структура каталогов моего проекта в основном выглядит следующим образом:

root / src

root / assets

root / library

У меня в настоящее время установлен CMakeчтобы скомпилировать исходный код, скомпилировать библиотеку и затем связать их, вызвав make из корневого каталога.

Затем мне нужно вручную переместить исполняемый файл в исходный каталог assets, чтобы запустить его, так как этогде он должен быть (и мы хотим протестировать нашу структуру каталогов в ресурсах настолько близко, насколько мы ожидаем, когда это будет сделано).

Итак, есть ли способ сказать CMake, что он автоматически прикрепитскомпилированный бинарный файл в этом каталоге, а также скопировать активы?Поскольку мы делаем исходные сборки, вставлять исполняемый файл обратно в исходную папку ресурсов исходного проекта кажется странным.

Короче говоря, два вопроса: есть ли способ заставить CMake копировать ресурсы, а также коди есть ли способ заставить его скопировать сгенерированный исполняемый файл в определенное место в дереве сборки?

Буду признателен за любую помощь --- спасибо!

1 Ответ

9 голосов
/ 08 февраля 2011

Вот простой пример со структурой, подобной вашей:

  • root / src / main.cpp (только исходный файл)
  • root / assets (где я хочу, чтобы исполняемый файл былgo)

Вот файл cmake:

PROJECT(HelloCMake)
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${HelloCMake_SOURCE_DIR}/assets)
add_executable (HelloCMake src/main.cpp) 

Когда я строю против этого с помощью Visual Studio, я получаю вывод, помещенный в root / assets / debug.Мне пришлось бы копать, чтобы выяснить, как избавиться от дополнительной папки конфигурации (отладка).Не идеально, но, надеюсь, это приведет вас на правильный путь.

Редактировать ... Еще лучше:

INSTALL(TARGETS HelloCMake DESTINATION ${HelloCMake_SOURCE_DIR}/assets)
...