Как мне сделать вывод CMake в директорию bin?
Я в настоящее время строю проект со структурой плагина. Я использую CMake для компиляции проекта. Плагины скомпилированы в отдельных каталогах. Моя проблема в том, что CMake компилирует и сохраняет двоичные файлы и плагины, динамические библиотеки, в структуре каталогов исходного кода. Как мне сделать так, чтобы CMake сохранял файлы в директории. /bin?
Ответы
Ответ 1
Как и в ответе Олега, я считаю, что правильная переменная - 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
).
Ответ 2
Используйте set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "/some/full/path/to/bin")
Ответ 3
Используйте переменную EXECUTABLE_OUTPUT_PATH
CMake, чтобы установить нужный путь. За подробностями обращайтесь к онлайн-документации CMake:
CMake 2.8.8 Документация
Ответ 4
$ cat CMakeLists.txt
project (hello)
set(EXECUTABLE_OUTPUT_PATH "bin")
add_executable (hello hello.c)
Ответ 5
Что касается меня, я использую 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/"
)
Ответ 6
cat CMakeLists.txt
project (hello)
set(CMAKE_BINARY_DIR "/bin")
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
add_executable (hello hello.c)
Ответ 7
Английский не мой родной язык; пожалуйста, извините за ошибки при печати.
используйте эту строку конфигурации:
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build/)
разместите свой любой проект CMakeLists.txt.
this $ {PROJECT_SOURCE_DIR} - это ваш текущий каталог с исходным кодом, в котором находится проект.
и если бродить почему $ {EXECUTABLE_OUTPUT_PATH}
проверьте этот файл CMakeCache.txt
затем найдите output path
ключевого слова,
все переменные, определенные здесь, дадут полное объяснение всех setting·
проекта setting·
Ответ 8
Независимо от того, определяю ли я это в основном файле CMakeLists.txt или в отдельных, оно все равно предполагает, что я хочу все