2016-05-27 6 views
0

私はうるう動作のmakefileからcmakelistファイルを作成しようとしています。特定のディレクトリでコンパイルできます。私は/ include /と/ lib/x64/directoriesをコピーする必要があります。私は次のようにcmakelistファイルを構築しようとしていCMAKEListの跳躍の動き

LEAP_LIBRARY := ./lib/x64/libLeap.so -Wl,-rpath,./lib/x64 

Sample: Sample.cpp 
    $(CXX) -Wall -g -I include Sample.cpp -o Sample $(LEAP_LIBRARY) 

::メイクファイルは以下です

cmake_minimum_required(VERSION 2.8) 
project(Sample) 

INCLUDE_DIRECTORIES(/include/) 
LINK_DIRECTORIES(/lib/x64/) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -g -I /include/ -Wl,-rpath,./lib/x64") 

add_executable(Sample Sample.cpp) 
target_link_libraries(Sample libLeap.so) 

しかし、私はいつも同じエラーを取得:

Linking CXX executable Sample 
/usr/bin/ld: can't find -lLeap 
collect2: error: ld returned 1 exit status 
make[2]: *** [Sample] Error 1 
make[1]: *** [CMakeFiles/Sample.dir/all] Error 2 
make: *** [all] Error 2 

おかげで、よろしく。

+0

ライブラリへのフルパス*を知っているなら、* target_link_libraries *呼び出しでそれを使用してください: 'target_link_libraries(Sample /lib/x64/libLeap.so)'。このコマンドについては、[documentation](https://cmake.org/cmake/help/v3.5/command/target_link_libraries.html)も参照してください。 * CMAKE_CXX_FLAGS *変数のすべてを列挙しないでください。 '-I/include'指示文はすでに' include_directories'コマンドに変換されています。 RPATHディレクティブについては、[CMAKE RPATH handling wiki](https://cmake.org/Wiki/CMake_RPATH_handling)を参照してください。 – Tsyvarev

+0

ご協力ありがとうございます。解決済み。 – user3704922

答えて

0

私は次の行に解決することができ:

cmake_minimum_required(VERSION 2.8) 
project(Sample) 
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 
INCLUDE_DIRECTORIES(../include/) 
LINK_DIRECTORIES(../lib/x64/) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -g") 

add_executable(Sample Sample.cpp) 
target_link_libraries(Sample -lLeap) 

このソリューションは、警告を持っていますが、動作します。この警告を削除する

CMake Warning (dev) at CMakeLists.txt:5 (LINK_DIRECTORIES): 
This command specifies the relative path 

../lib/x64 

as a link directory. 

Policy CMP0015 is not set: link_directories() treats paths relative to the 
source dir. Run "cmake --help-policy CMP0015" for policy details. Use the 
cmake_policy command to set the policy and suppress this warning. 
This warning is for project developers. Use -Wno-dev to suppress it. 

-- Configuring done 
-- Generating done 
-- Build files.... 

双方向:

cmake_minimum_required(VERSION 2.8) 
project(Sample) 

cmake_policy(SET CMP0015 NEW) 

SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 
INCLUDE_DIRECTORIES(../include/) 
LINK_DIRECTORIES(lib/x64/) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -g") 

add_executable(Sample Sample.cpp) 
target_link_libraries(Sample -lLeap) 

cmake .. -Wno-dev

を使用します
+0

警告メッセージに書かれているように、 'link_directories'の絶対パスか、CMP0015というプロパティをNEW:' cmake_policy(SET CMP0015 NEW) 'に設定してください。 – Tsyvarev

+0

もう一度ありがとうございます。警告が解決しました。 – user3704922

関連する問題