Подтвердить что ты не робот

Как изменить исполняемый выходной каталог для сборки Win32 в CMake?

Моя проблема такова: Я разрабатываю небольшой парсер с помощью Visual Studio 2010. Я использую CMake в качестве инструмента конфигурации сборки.

Но я считаю поведение исполняемого здания по умолчанию неудобным. Я хочу, чтобы моя последняя программа была расположена в:

E:/parsec/bin/<exe-name>.<build-type>.exe

а не

E:/parsec/bin/<build-type>/<exe-name>.exe

Как вы это сделаете с помощью CMake?

4b9b3361

Ответ 1

Существует несколько вариантов:

  • Скопируйте исполняемый файл после сборки
  • Настройка каталога вывода для вашего исполняемого файла (ов)

Скопируйте исполняемый файл после сборки

После успешной сборки вы можете скопировать исполняемый файл (см. "Ответ начинающих" ), но, возможно, лучше использовать цель установки:

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

Настройка каталога вывода для вашего исполняемого файла (ов)

Предупреждение: Не рекомендуется устанавливать абсолютные пути непосредственно в файле cmakelists.txt.

Используйте set_target_properties, чтобы настроить RUNTIME_OUTPUT_DIRECTORY

set_target_properties( yourexe PROPERTIES RUNTIME_OUTPUT_DIRECTORY E:/parsec/bin/ )

В качестве альтернативы, изменение CMAKE_RUNTIME_OUTPUT_DIRECTORY позволяет указать это для целей all в cmake проект. Позаботьтесь о том, чтобы изменить CMAKE_LIBRARY_OUTPUT_DIRECTORY, когда вы создаете DLL.

set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )

Дополнительная информация. Посмотрите на эти вопросы:

Ответ 2

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

add_custom_command(target your_target_name
          POST_BUILD
          COMMAND ${CMAKE_COMMAND} -E copy ${EXAMPLE_BIN_NAME} ${PROJECT_BINARY_DIR}/.
)