2012-11-23 124 views
1

我剛開始使用CMake構建C項目。在CMake項目中指定項目依賴關係

我的項目目錄結構如下:

MainProject 
    module1/ 
     src/ 
     include/ 
     CMakeLists.txt 
    module1/ 
     src/ 
     include/ 
     CMakeLists.txt 

.... 
    moduleN/ 
     src/ 
     include/ 
     CMakeLists.txt 

目前,我在正確的建設我的模塊,但是,我現在希望能夠這樣,當我做一個模塊,指定模塊間的依賴關係,所有的依賴模塊都被重建(如果改變)。

我的CMakeLists.txt文件通常是這樣的:

CMAKE_MINIMUM_REQUIRED(VERSION 2.8) 

PROJECT(basetypes) 
FIND_PACKAGE(Threads) 
SET(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} "-pthread") 
ADD_DEFINITIONS(-DE4C_THREADSAFE) 

INCLUDE_DIRECTORIES ("include/") 

SET(basetypes_SRCS 
    src/btypes_1.c 
    src/btypes_2.c 
    src/btypes_3.c 
    src/btypes_4.c 
    src/btypes_5.c 
    src/vfuncs.c 
    src/btypes_6.c  
    src/btypes_7.c 
    src/btypes_8.c 
    src/btypes_8.c 
    src/e4c.c) 

ADD_LIBRARY(basetypes SHARED ${basetypes_SRCS}) 

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "bin/") 

如何修改這樣的CMakeLists文件來指定其他相關項目(S)?

回答

1

嘗試target_link_libraries命令。但是,它需要知道模塊名稱,所以我建議您編寫一個全局CMakeLists文件,其中包含add_subdirectory命令的模塊。

+0

此外,您訂購add_subdirectory調用的方式對於鏈接無關緊要。 target_link_libraries可以引用稍後將在其他子目錄中定義的庫。 – raek