我正在處理一個包含3個服務器可執行文件和一個共享代碼庫的項目。我希望它是跨平臺的,所以我使用CMake來處理構建過程(因爲無論如何Xcode都是痛苦的)。我在設置CMakeLists時遇到了麻煩,所以我在構建可執行文件時可以從同一級別的目錄中包含庫。CMake:使用靜態庫在一個項目中構建多個可執行文件
這裏的目錄結構(與CMake的文件):
tethealla2.0/
CMakeLists.txt
libtethealla/
CMakeLists.txt
encryption/
utils/
patch_server/
CMakeLists.txt
login_server/
CMakeLists.txt
ship_server/
CMakeLists.txt
我頂層的CMake(tethealla2.0 /的CMakeLists.txt,僅包括子項目應該編譯):
project(tethealla CXX)
cmake_minimum_required(VERSION 2.6)
add_subdirectory(libtethealla)
add_subdirectory(patch_server)
tethealla2.0/libtethealla /的CMakeLists.txt,其產生的靜態庫:
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})
TET healla2.0/patch_server /的CMakeLists.txt迄今:
project(patch_server CXX)
cmake_minimum_required(VERSION 2.6)
add_executable(server main.cc)
target_link_libraries(server tethealla)
所以它更有意義,如果我從自tethealla2.0頂層建立它/的CMakeLists.txt將從每個子目錄並繼承目標patch_server中的一個將可以訪問tethealla庫。但是我想要的是能夠從這些子目錄中生成Xcode項目,以便我可以單獨編譯/重新編譯它們。爲此,我需要能夠訪問libtethealla/build目錄(其中CMake輸出)以從patch_server訪問libtethealla.a庫。這可能嗎?
在另一種說法中,即使從頂層目錄構建,我在patch_server中的源代碼也不能包含加密中庫的頭文件「encryption.h」。這似乎正在建設好。任何想法都非常感謝!