Я пытаюсь использовать 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})
это не имеет значения.
У меня есть несколько (взаимосвязанных) вопросов:
- Какой лучший способ принудить cmake к созданию моей библиотеки и исполняемого файла в "промежуточном каталоге" — скажите MyStage — сохранить цели отдельно от источника?
- Как убедить cmake связать приложение с библиотекой?
- Если бы я хотел создать отладочную версию и версию выпуска, то какой лучший способ расширить мои сценарии cmake, чтобы сделать это & mdash; убедиться, что приложение отладки ссылается на библиотеку отладки и приложение выпуска на библиотеку выпусков?
Я относительный новичок в cmake. Я читал, что могу найти в Интернете, но обнаружил, что изо всех сил пытаюсь связать мою библиотеку с моим исполняемым файлом. На мой взгляд, такая конфигурация должна быть довольно распространенной. Пример, из которого на кроватку был бы очень полезен, но я его не нашел.