Как сделать вывод CMake в' bin ' dir?
в настоящее время я создаю проект со структурой плагина. Я использую CMake для компиляции проекта. Плагины компилируются в отдельных каталогах. Моя проблема заключается в том, что CMake компилирует и сохраняет двоичные файлы и плагины, динамические библиотеки, в структуре каталогов источника. Как я могу сделать CMake сохранить файлы в чем-то вроде ./ОГРН?
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·
Comments