2016-05-12 10 views
4

私はMakefileプロジェクトをcmakeに変換しようとしています。MakefileからCMakeへの変換

私のプロジェクトには、内部共有ライブラリと外部共有ライブラリの両方にビルドされてリンクされた実行可能ファイルがあります(両方に実行可能ファイルに依存関係がある)。ここで

は私の古いMakefileの(一般化)である:私は実行可能ファイルを実行すると、

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) 

で定義された関数を呼び出します。ここでは

はCMakeLists.txt(一般)での私の試みですインクルードディレクトリreturn -nan。なぜ誰が知っていますか?

+0

あなたはlibextern_init' 'のようなものを忘れることができますか? – fghj

+0

'実行可能ファイルを実行すると、インクルードディレクトリに定義されている関数を呼び出すと-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") 
関連する問題