CMAKE: Construire la bibliothèque et de liaison contre elle

Je suis en train d'utiliser cmake (sur Linux avec GNU make et g++) pour construire un projet avec deux sous-répertoires: MyLib et MyApp. MyLib contient la source pour une bibliothèque statique; MyApp besoins de lien en face de la bibliothèque. Je suis en train de construire sur Linux avec les makefiles générés à l'aide de la suite 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)

Ce qui est "presque" des œuvres. Il échoue au moment de lien parce que tandis qu'elle génère libMyLibrary.a - il est dans la racine. Quand j'ajoute:

link_directories(${MyProj_BINARY_DIR})

il ne fait aucune différence.

J'ai un peu (inter-reliés) questions:

  1. Quelle est la meilleure façon de contraindre cmake dans la construction de ma bibliothèque et exécutable dans une "mise en scène du répertoire' — dire MyStage — pour garder des objectifs distincts à partir de la source?
  2. Comment puis-je convaincre cmake à lier l'application à l'encontre de la bibliothèque?
  3. Si je voulais construire un debug et une version, quelle est la meilleure façon de prolonger mon cmake scripts pour ce faire, faisant en sorte que l'application de débogage liens contre le débogage de la bibliothèque et de la libération de l'application à l'encontre de la version de bibliothèque?

Je suis un nouveau venu par rapport à cmake. J'ai lu ce que je peux trouver sur le web, mais trouver moi-même de la difficulté à obtenir ma bibliothèque de lien avec mon exécutable. Ce type de configuration, à mon avis, devrait être tout à fait commun. Un exemple pour partir à la crèche serait très utile, mais je n'ai pas trouvé un.

OriginalL'auteur aSteve | 2011-10-19