Как сделать вывод CMake в " bin " dir?
в настоящее время я создаю проект со структурой плагина. Я использую CMake для компиляции проекта. Плагины компилируются в отдельные каталоги. Моя проблема в том, что CMake компилирует и сохраняет двоичные файлы и плагины, динамические библиотеки, в структуре каталогов источника. Как сделать CMake сохранить файлы в чем-то вроде ./ bin?
7 ответов
в ответ Олег, я считаю правильной переменной набор 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
).
использовать EXECUTABLE_OUTPUT_PATH
переменная CMake для установки необходимого пути. Для получения дополнительной информации обратитесь к онлайн-документации CMake:
$ cat CMakeLists.txt
project (hello)
set(EXECUTABLE_OUTPUT_PATH "bin")
add_executable (hello hello.c)
что касается меня, я использую cmake 3.5, ниже (set variable
) не работает:
set(
ARCHIVE_OUTPUT_DIRECTORY "/home/xy/cmake_practice/lib/"
LIBRARY_OUTPUT_DIRECTORY "/home/xy/cmake_practice/lib/"
RUNTIME_OUTPUT_DIRECTORY "/home/xy/cmake_practice/bin/"
)
но это работает(set set_target_properties
):
set_target_properties(demo5
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "/home/xy/cmake_practice/lib/"
LIBRARY_OUTPUT_DIRECTORY "/home/xy/cmake_practice/lib/"
RUNTIME_OUTPUT_DIRECTORY "/home/xy/cmake_practice/bin/"
)
cat CMakeLists.txt
project (hello)
set(CMAKE_BINARY_DIR "/bin")
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
add_executable (hello hello.c)
английский не является моим родным языком; пожалуйста, извините за ошибки ввода.
используйте эту строку config :set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build/)
разместить ваши любые CMakeLists.проект тхт.
этот ${PROJECT_SOURCE_DIR} - ваш текущий исходный каталог, в котором находится место проекта .
и если бродить, почему ${EXECUTABLE_OUTPUT_PATH}
проверьте этот файл CMakeCache.txt
затем найдите ключевое слово output path
,
все переменные определяют здесь , это дало бы полное объяснение проект все setting·