Как и в ответе Олега, я считаю, что правильная переменная для установки - CMAKE_RUNTIME_OUTPUT_DIRECTORY . Мы используем следующее в нашем корне CMakeLists.txt:
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
Вы также можете указать выходные каталоги для каждой цели:
set_target_properties( targets...
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
В обоих случаях вы можете добавить _[CONFIG]
к имени переменной / свойств , чтобы сделать выходной каталог применить к конфигурации конкретной (стандартные значения для конфигурации являются DEBUG
, RELEASE
, MINSIZEREL
и RELWITHDEBINFO
).
CMAKE_ARCHIVE_OUTPUT_DIRECTORY
, учитывая, что команда по-install(TARGETS <target_name>)
прежнему жалуется на то, что «не назначено RUNTIME DESTINATION для исполняемой цели»? Эта переменная предположительно предоставляет значение по умолчанию, поэтомуinstall
команда не должна жаловаться на отсутствие aRUNTIME DESTINATION
.использование
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "/some/full/path/to/bin")
источник
Используйте
EXECUTABLE_OUTPUT_PATH
переменную CMake, чтобы установить нужный путь. За подробностями обращайтесь к онлайн-документации CMake:CMake 2.8.8 Документация
источник
Что касается меня, я использую cmake 3.5, ниже (
set variable
) не работает:но это работает (
set set_target_properties
):источник
источник
используйте эту строку config:
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build/)
поместите любой ваш проект CMakeLists.txt.
this $ {PROJECT_SOURCE_DIR} - это ваш текущий каталог исходных текстов, в котором находится проект.
и если бродить, почему $ {EXECUTABLE_OUTPUT_PATH}
проверяют этот файл,
CMakeCache.txt
то ищут ключевое словоoutput path
,все переменные, определенные здесь, дадут полное объяснение всего проекта
setting·
источник
источник
Независимо от того, определяю ли я это в основном CMakeLists.txt или в отдельных файлах, все равно предполагается, что я хочу, чтобы все libs и bin были вне основного пути, что является наименее полезным предположением из всех.
источник
Чтобы добавить к этому:
Если вы используете CMAKE для генерации решения Visual Studio и хотите, чтобы Visual Studio выводил скомпилированные файлы в / bin, ответ Питера нужно немного изменить:
источник