Перемещение заголовков / библиотек / исполняемых файлов в определенные каталоги - PullRequest
1 голос
/ 09 июня 2011

Я недавно начал использовать CMake для одного из моих мультиплатформенных проектов, но у меня возникли небольшие затруднения при выяснении, как что-то сделать.

По сути, внутри проекта у меня есть несколькобиблиотеки и исполняемые файлы, все в своих папках.Я хотел бы поместить все скомпилированные библиотеки в один каталог при сборке, т.е. в папку lib внутри папки сборки CMake.Я хотел бы сделать то же самое для исполняемых файлов.

CMake Build Directory

| ----------> bin (where i want the executables to go)

| ----------> lib (where i want the libraries to go)

| ----------> utils (where the libraries are ordinarily compiled)

| ----------> test (where the executables are ordinarily compiled)

В утилитах и ​​приложениях есть каталоги для всех различных библиотек и исполняемых файлов, которые я делаю.У меня есть CMakeLists в базовой папке моего исходного каталога, который добавляет все подкаталоги.Если что-то не имеет смысла, не стесняйтесь спрашивать.

Ответы [ 3 ]

5 голосов
/ 10 июня 2011

Вы также можете использовать это:

  set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
  set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
  set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
3 голосов
/ 09 июня 2011

Посмотрите на install Команда CMake.

Вот пример с этой страницы:

install(TARGETS myExe mySharedLib myStaticLib
        RUNTIME DESTINATION bin
        LIBRARY DESTINATION lib
        ARCHIVE DESTINATION lib/static)
install(TARGETS mySharedLib DESTINATION /some/full/path)

Таким образом, вы можете использовать CMAKE_BINARY_DIR вместо / some / full / path

1 голос
/ 25 октября 2017

Кроме того, для включает в себя:

install( FILES ${HEADERS} DESTINATION inc )

[когда устанавливается набор заголовочных файлов]

install( DIRECTORY include/${PROJECT_NAME}/ DESTINATION inc)

[когда каталог заголовка будет установлен]

Подробнее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...