我試圖使用CMake的(在Linux上使用GNU使和g ++)建設項目有兩個子目錄:MyLib中和MyApp的。 MyLib包含靜態庫的源代碼; MyApp需要鏈接到該庫。我試圖使用下面的CMakeLists.txt在生成的makefiles上構建Linux:CMake的:建立圖書館,並連接它
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)
這'幾乎'起作用。它在鏈接時失敗,因爲它生成libMyLibrary.a - 它在根中。當我加入:
link_directories(${MyProj_BINARY_DIR})
它沒有區別。
我有幾個(相互關聯的)問題:
- 什麼是強迫的cmake投入建設我的圖書館和可執行成一個「臨時目錄」 —說MyStage —保持目標分離的最佳方法來自源?
- 如何說服cmake將應用程序與庫鏈接?
- 如果我想建立一個調試和發佈版本,什麼是延長我的CMake的腳本來做到這一點—做出最好的方式確保對調試庫,並釋放庫發佈應用程序調試應用程序鏈接?
我是一個相對較新的cmake的。我已經閱讀了我能在網上找到的內容,但發現自己正努力讓我的圖書館與我的可執行文件鏈接。在我看來,這種配置應該是相當普遍的。一個例子從哪個嬰兒牀將是非常有益的,但我沒有找到一個。
我可以看到(1)如何工作的 - 儘管我不認爲這是整潔。如果我可以提供幫助,我不需要在我的圖書館旁邊的「臨時目錄」中使用CMakeLists.txt。 – aSteve
Uhm,不,不,CMakeLists.txt停留在源碼樹中。作爲參數傳遞給cmake的路徑是包含頂級CMakeLists.txt的目錄。在這個設置中,「暫存」目錄在cmake調用之前是完全空的。 – kralyk