2016-05-12 56 views
4

我想將Makefile項目轉換爲cmake。將Makefile轉換爲CMake

我的項目有一個可執行文件,它被構建並鏈接到內部共享庫和外部共享庫(可執行文件中都有依賴關係)。

這裏是我的老Makefile文件(廣義):

這是我嘗試在的CMakeLists.txt(廣義):

include_directories(${PROJECT_SOURCE_DIR}/include/) 
add_executable(test1 test1.cpp) 
set (CMAKE_CXX_FLAGS "-D_GLIBCXX_DEBUG -DProjectRescource=${PROJECT_SOURCE_DIR}/resources -O0 -g3 -Wall -fpermissive -std=c++0x -fPIC -MMD -MP") 
include_directories($ENV{EXTERN_INCLUDE}/lnInclude) 
target_link_libraries(test1 "$ENV{EXTERN_LIBBIN}/libextern.so" Project) 

當我運行可執行文件,要求在定義的函數include目錄返回-nan。有誰知道爲什麼?

+0

可能是你忘了像'libextern_init'? – fghj

+0

'當我運行可執行文件時,調用include目錄中定義的函數return -nan.' - 它依賴於外部庫爲什麼函數返回「-nan」。但我們對這個圖書館一無所知。 – Tsyvarev

+1

檢查http://stackoverflow.com/questions/15100351/changing-cmake-cxx-flags-in-project以獲得正確的編譯選項定義。 – user3159253

回答

2

該問題的原因是由於共享庫的鏈接順序。

我能夠改變的CMakeLists.txt的最後一行來解決這個問題:

target_link_libraries(test1 Project "$ENV{EXTERN_LIBBIN}/libextern.so")