CMake: Bauen Sie Mehrere ausführbare Dateien in einem Projekt mit Statischen Bibliothek

Arbeite ich an einem Projekt, das aus 3-server-Dateien und eine Bibliothek für freigegebene code. Ich will, dass es cross-Plattform, so dass ich mit CMake (seit Xcode ist ein Schmerz sowieso) zu behandeln, den build-Prozess. Ich habe Probleme mit der Einrichtung der CMakeLists, so dass ich die Bibliothek aus einem Verzeichnis auf dem gleichen Niveau, wenn ich Baue die ausführbare Datei.

Hier ist die Verzeichnis-Struktur (und den CMake-Dateien):

tethealla2.0/
    CMakeLists.txt
    libtethealla/
        CMakeLists.txt
        encryption/
        utils/
    patch_server/
        CMakeLists.txt
    login_server/
        CMakeLists.txt
    ship_server/
        CMakeLists.txt

Meine top-level-CMake (tethealla2.0/CMakeLists.txt nur enthält die sub-Projekte kompilieren):

project(tethealla CXX)
cmake_minimum_required(VERSION 2.6)

add_subdirectory(libtethealla)
add_subdirectory(patch_server)

tethealla2.0/libtethealla/CMakeLists.txt die Generierung einer statischen Bibliothek:

project(Libtethealla C)
cmake_minimum_required(VERSION 2.6)

include_directories(encryption)

set(ENC_DR encryption/)

set(ENCRYPTION_SOURCES 
  ${ENC_DR}/psobb-crypt.c
  ${ENC_DR}/psogc-crypt.c
  ${ENC_DR}/psobb-crypt.c
  ${ENC_DR}/encryption.c
  )

add_library(tethealla STATIC ${ENCRYPTION_SOURCES})

tethealla2.0/patch_server/CMakeLists.txt so weit:

project(patch_server CXX)
cmake_minimum_required(VERSION 2.6)

add_executable(server main.cc)
target_link_libraries(server tethealla)

Daher macht es mehr Sinn, wenn Baue ich es aus der obersten Ebene, da tethealla2.0/CMakeLists.txt Erben werden die Ziele von jedem der Unterverzeichnisse und die in patch_server haben Zugang zu der tethealla Bibliothek. Aber was ich will ist, um in der Lage zu sein innerhalb dieser Unterverzeichnisse erzeugen von Xcode-Projekten, so dass ich arbeiten kann/kompilieren Sie Sie einzeln. Zu tun, so muss ich in der Lage sein, die libtethealla/build-Verzeichnis (wo CMake-Ausgänge) Zugriff auf die libtethealla.eine Bibliothek von patch_server. Ist das möglich?

Auf einer anderen Anmerkung, auch im Gebäude von der top-level-Verzeichnis meiner Quelle in patch_server kann nicht zählen " - Verschlüsselung.h" die header-Datei für die Bibliothek in Verschlüsselung. Das scheint zu sein Gebäude in Ordnung. Irgendwelche Gedanken auf, die sind auch sehr dankbar!

InformationsquelleAutor drodman | 2014-05-15
Schreibe einen Kommentar