This link將爲您提供一些示例。
就您如何看待項目/基礎設施而言,最好不要將事情混淆太多。因此,這裏是幾個百分點的讓你開始(我希望)
- C++中的模塊庫(所以請參閱您的網絡模塊作爲 庫)
- 要包括你需要一個庫鏈接它和也使 頭文件可用。
在cmake的,這是分別兩個命令target_link_libraries
和include_directories
。
考慮到這一點的項目結構可能是
/Network/include (api here)
/Network/src
/sw1/src
/sw2/src
與示範基地的CMakeLists.txt爲您的文件:(項目的根目錄的地方)
cmake_minimum_required(VERSION 2.7) // your choice
project(myproject) // change name
add_subdirectory(Network)
add_subdirectory(sw1)
add_subdirectory(sw2)
網絡目錄你會有這個
add_library(Network net1.cc net2.cc etc.)
在sw1目錄
include_dirs(${MYPROJECT_SOURCE_DIR}/Network/include)
link_directories(${MYPROJECT_BINARY_DIR}/Network)
add_executable (sw1prog sw1.cc sw11.cc etc.)
target_link_libraries (sw1prog Network)
在SW2 DIR
include_dirs(${MYPROJECT_SOURCE_DIR}/Network/include)
link_directories(${MYPROJECT_BINARY_DIR}/Network)
add_executable (sw2prog sw2.cc sw21.cc etc.)
target_link_libraries (sw2prog Network)
這是你需要什麼非常簡化版本,它消除了對FindXXModule.cmake文件需要被創建,是指隱含地創建庫。我認爲這對你來說是最好的機制,如果你確實想創建一個FindXXModule.cmake,那麼我會建議它是當你真的把你的庫安裝到機器上,並希望其他人能夠找到它,要麼有機制爲多個項目鏈接到彼此的圖書館。
我希望這有點用處,請記住cmake site有一些例子,cmake --help
是你的朋友。
我認爲這將是很好的有一個FindXModule.cmake抽象一點點庫,並有一種方法來輕鬆創建一個新的SW3,只是說:'使用網絡',使用'數據庫',並有一個很好的「插件「系統,但你的方式似乎也很簡單 – nkint
你可以通過安裝路徑並將系統安裝到該路徑來實現這一點。然後您想要使用網絡等項目將運行FindXModule.cmake。所以真的是兩個不同的問題,至少在我心中:-) – dirvine
非常感謝。這行得通。我試圖複雜一點,但更多的問題現在已經提出,我做了另一個問題:http://stackoverflow.com/questions/17264037/cmake-for-a-build-a-simple-framework – nkint