Я пытаюсь использовать 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 собрать мою библиотеку и исполняемый файл в «промежуточный каталог» & mdash; скажи MyStage & mdash; держать цели отдельно от источника?
- Как мне убедить cmake связать приложение с библиотекой?
- Если я хотел создать отладочную и выпускную версию, каков лучший способ расширить мои сценарии cmake для этого & mdash; убедиться, что приложение отладки связано с библиотекой отладки, а приложение выпуска с библиотекой выпуска?
Я относительный новичок в cmake. Я прочитал, что я могу найти в Интернете, но мне не удается связать мою библиотеку с моим исполняемым файлом. Такая конфигурация, на мой взгляд, должна быть довольно распространенной. Был бы очень полезен пример, по которому можно было бы колыбели, но я его не нашел.