我有三個文件:cmake的創建共享對象
lib.c lib.h =>他們應該建成一個.so文件
client.c =>這應該被構建爲一個可執行文件。
的client.c我包括lib.h文件,以獲得下lib.c定義的函數的聲明裏面
有人能告訴我,我應該使用,使源區的確切CMakeLists文件與Cmake的臨時文件和二進制文件和庫(在我相信windows的情況下的.dll)在獨立的構建和二進制目錄中生成的整潔?
我有三個文件:cmake的創建共享對象
lib.c lib.h =>他們應該建成一個.so文件
client.c =>這應該被構建爲一個可執行文件。
的client.c我包括lib.h文件,以獲得下lib.c定義的函數的聲明裏面
有人能告訴我,我應該使用,使源區的確切CMakeLists文件與Cmake的臨時文件和二進制文件和庫(在我相信windows的情況下的.dll)在獨立的構建和二進制目錄中生成的整潔?
cmake的建立在默認情況下,單獨的生成目錄(我沒有測試這個例子):
PROJECT(myproject)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
SET(mylibSRCS lib.c)
SET(myprogSRCS client.c)
ADD_LIBRARY(mylib ${mylibSRCS})
ADD_EXECUTABLE(myprog ${myprogSRCS})
TARGET_LINK_LIBRARIES(myprog mylib)
你這樣做:
mkdir build
cd build
cmake ..
make
一切都將是下建造。
此解決方案不會創建.so
文件,而是與cmake進一步包含的cmake等效文件。
我與尋找解決的辦法將提供相同的:
g++ -shared -Wl,-soname,plugin_lib.so.1 -o plugin_lib.so plugin_lib.o
這將產生可以動態使用dlopen在運行時加載的plugin_lib.so
。
的解決方案缺少像這樣的「共享」選項:
ADD_LIBRARY(mylib SHARED ${mylibSRCS})
接受的答案應該更新 –
有沒有辦法在新目錄中始終做到建立一個沒有執行這些shell命令?我google搜索,但無法找到任何有用的鏈接。 –
http://stackoverflow.com/questions/11143062/getting-cmake-to-build-out-of-source-without-wrapping-scripts/11144109#11144109 – Fraser
是的。你可以'mkdir建立&cd建立&cmake ..&make'。如果您需要超級清理存儲庫,只需刪除構建目錄即可。這將生成的東西從原始來源中分離出來。 – Stewart