Как сделать вывод CMake в' bin ' dir?



в настоящее время я создаю проект со структурой плагина. Я использую CMake для компиляции проекта. Плагины компилируются в отдельных каталогах. Моя проблема заключается в том, что CMake компилирует и сохраняет двоичные файлы и плагины, динамические библиотеки, в структуре каталогов источника. Как я могу сделать CMake сохранить файлы в чем-то вроде ./ОГРН?

731   7  

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).

использовать set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "/some/full/path/to/bin")

использовать EXECUTABLE_OUTPUT_PATH переменная CMake для установки необходимого пути. Для получения дополнительной информации см. документацию CMake на сайте:

CMake 2.8.8 Документация

$ 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

    Ничего не найдено.