¿Cómo hago que la salida de CMake sea un directorio ‘bin’?

Actualmente estoy construyendo un proyecto con una estructura de complemento. Estoy usando CMake para comstackr el proyecto. Los complementos se comstackn en directorios separados. Mi problema es que CMake comstack y guarda los binarios y complementos, bibliotecas dinámicas, en la estructura de directorios de la fuente. ¿Cómo hago para que CMake guarde los archivos en algo así como un directorio ./bin ?

Como en la respuesta de Oleg, creo que la variable correcta para establecer es CMAKE_RUNTIME_OUTPUT_DIRECTORY . Usamos lo siguiente en nuestra raíz 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) 

También puede especificar los directorios de salida por destino:

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

En ambos casos, puede agregar _[CONFIG] al nombre de variable / propiedad para hacer que el directorio de salida se aplique a una configuración específica (los valores estándar para la configuración son DEBUG , RELEASE , MINSIZEREL y RELWITHDEBINFO ).

Usar set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "/some/full/path/to/bin")

Use la variable EXECUTABLE_OUTPUT_PATH CMake para establecer la ruta necesaria. Para más detalles, consulte la documentación en línea de CMake:

Documentación de CMake 2.8.8

 $ cat CMakeLists.txt project (hello) set(EXECUTABLE_OUTPUT_PATH "bin") add_executable (hello hello.c) 

En cuanto a mí, estoy usando cmake 3.5, el siguiente ( set variable ) no funciona:

 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/" ) 

pero esto funciona ( 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) 

El inglés no es mi lengua materna; por favor disculpe los errores de tipeo.

usa esta configuración de línea:
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build/)
coloque su proyecto CMakeLists.txt.
este $ {PROJECT_SOURCE_DIR} es su directorio fuente actual donde se ubica el proyecto.
y si deambula, ¿por qué es $ {EXECUTABLE_OUTPUT_PATH}
revise este archivo CMakeCache.txt luego busque la output path palabra clave,
todas las variables definen aquí, daría una explicación completa de todo el setting· del proyecto setting·