CMAKE: Сборка библиотеки и ссылка на нее

Я пытаюсь использовать cmake (в Linux с GNU make и g ++) для создания проекта с двумя подкаталогами: MyLib и MyApp.MyLib содержит исходный код статической библиотеки; MyApp необходимо связать с этой библиотекой. Я пытаюсь собрать Linux с помощью сгенерированных make-файлов, используя следующий файл CMakeLists.txt:

cmake_minimum_required (VERSION 2.6)
project (MyProj)
include_directories (MyLib)
file(GLOB MyLibSrc MyLib/*.cpp)
add_library(MyLibrary STATIC ${MyLibSrc})
file(GLOB MyAppSrc MyApp/*.cpp)
add_executable(MyApplication ${MyAppSrc})
target_link_libraries(MyApplication MyLibrary)

Это «почти» работает. Он не работает во время компоновки, потому что пока он генерирует libMyLibrary.a, он находится в корне. Когда я добавляю:

link_directories(${MyProj_BINARY_DIR})

, это не имеет значения.

У меня есть несколько (связанных) вопросов:

  1. Как лучше всего заставить cmake создать мою библиотеку и исполняемый файл в «промежуточном каталоге» - скажем, MyStage - чтобы целевые объекты были отделены от источника?
  2. Как мне убедить cmake связать приложение с библиотекой?
  3. Если бы я хотел создать отладочную и выпускную версию, какой лучший способ расширить мои сценарии cmake для этого - убедиться, что приложение отладки связывает против библиотеки отладки и приложения выпуска против библиотеки выпуска?

Я относительный новичок в cmake. Я читал то, что могу найти в Интернете, но обнаружил, что изо всех сил пытаюсь связать свою библиотеку с моим исполняемым файлом. Такая конфигурация, на мой взгляд, должна быть довольно распространенной. Пример, из которого можно поставить кроватку, был бы очень полезен, но я не нашел его.

12
задан aSteve 30 December 2013 в 12:01
поделиться