2017-10-31 7 views
1

私は実行可能ファイルを持っているが見つからないリンク:cmakeのは、ライブラリ

add_executable(treshhold src/main.cpp) 
add_dependencies(treshhold ${PROJECT_NAME}) 

私は複数の.soファイルを含むディレクトリ

/opt/halcon/lib/x64-linux 

を持っている:リンク

hAcqArgos3D-P1xx.so hAcqGigEVision.so hAcqMatrixVisionAcquire.so hAcquEye.so   hioOPC_UA.so   libhalconcpp.so libhalcon.so    libhdevenginecpp.so 
hAcqArgos3D-P1xxxl.so hAcqGigEVisionxl.so hAcqMatrixVisionAcquirexl.so hAcquEyexl.so   hioOPC_UAxl.so  libhalconcppxl.so libhalconxl.so   libhdevenginecppxl.so 
hAcqFile.so   hAcqLPS36.so   hAcqO3D3xx.so     hAcqVideo4Linux2.so libhalconcpp10.so libhalconc.so  libhdevenginecpp10.so libuastack.so 
hAcqFilexl.so   hAcqLPS36xl.so  hAcqO3D3xxxl.so    hAcqVideo4Linux2xl.so libhalconcpp10xl.so libhalconcxl.so libhdevenginecpp10xl.so libusb-1.0-usan.so.0 

を使用して使用してみました両方とも:

include_directories(/opt/halcon/lib/x64-linux) 
link_directories(/opt/halcon/lib/x64-linux) 

しかし、私は特定のライブラリをリンクする

target_link_libraries(treshhold libhalconc) 

をしようとすると、私はエラーを取得:

[ 50%] Linking CXX executable treshhold 
/usr/bin/ld: cannot find -llibhalconc 

を、私は、ターゲットリンクをしないようにしようとした場合、私はから欠落している参照エラーを取得しますコンパイラ。

EDIT全ファイル:

cmake_minimum_required(VERSION 2.8.3) 
project(ros_halcon_bridge) 

find_package(catkin REQUIRED COMPONENTS 
    roscpp 
    rospy 
    std_msgs 
) 



add_executable(treshhold src/main.cpp) 
add_dependencies(treshhold ${PROJECT_NAME}) 
include_directories(/opt/halcon/lib/x64-linux) 
link_directories(/opt/halcon/lib/x64-linux) 
target_link_libraries(treshhold libhalconc) 

EDIT2 私は次のようにすべてのライブラリを追加したい:

target_link_libraries(treshhold hAcqArgos3D-P1xx.so hAcqGigEVision.so hAcqMatrixVisionAcquire.so hAcquEye.so hioOPC_UA.so libhalconcpp.so libhalcon.so libhdevenginecpp.so hAcqArgos3D-P1xxxl.so hAcqGigEVisionxl.so hAcqMatrixVisionAcquirexl.so hAcquEyexl.so hioOPC_UAxl.so libhalconcppxl.so libhalconxl.so libhdevenginecppxl.so hAcqFile.so hAcqLPS36.so hAcqO3D3xx.so hAcqVideo4Linux2.so libhalconcpp10.so libhalconc.so libhdevenginecpp10.so libuastack.so hAcqFilexl.so hAcqLPS36xl.so hAcqO3D3xxxl.so hAcqVideo4Linux2xl.so libhalconcpp10xl.so libhalconcxl.so libhdevenginecpp10xl.so libusb-1.0-usan.so.0) 

が、それは、その結果:

[ 50%] Linking CXX executable treshhold 
/usr/bin/ld: cannot find -lhAcqArgos3D-P1xx 
/usr/bin/ld: cannot find -lhAcqGigEVision 
/usr/bin/ld: cannot find -lhAcqMatrixVisionAcquire 
/usr/bin/ld: cannot find -lhAcquEye 
/usr/bin/ld: cannot find -lhioOPC_UA 
/usr/bin/ld: cannot find -lhalconcpp 
/usr/bin/ld: cannot find -lhalcon 
/usr/bin/ld: cannot find -lhdevenginecpp 
/usr/bin/ld: cannot find -lhAcqArgos3D-P1xxxl 
/usr/bin/ld: cannot find -lhAcqGigEVisionxl 
/usr/bin/ld: cannot find -lhAcqMatrixVisionAcquirexl 
/usr/bin/ld: cannot find -lhAcquEyexl 
/usr/bin/ld: cannot find -lhioOPC_UAxl 
/usr/bin/ld: cannot find -lhalconcppxl 
/usr/bin/ld: cannot find -lhalconxl 
/usr/bin/ld: cannot find -lhdevenginecppxl 
/usr/bin/ld: cannot find -lhAcqFile 
/usr/bin/ld: cannot find -lhAcqLPS36 
/usr/bin/ld: cannot find -lhAcqO3D3xx 
/usr/bin/ld: cannot find -lhAcqVideo4Linux2 
/usr/bin/ld: cannot find -lhalconcpp10 
/usr/bin/ld: cannot find -lhalconc 
/usr/bin/ld: cannot find -lhdevenginecpp10 
/usr/bin/ld: cannot find -luastack 
/usr/bin/ld: cannot find -lhAcqFilexl 
/usr/bin/ld: cannot find -lhAcqLPS36xl 
/usr/bin/ld: cannot find -lhAcqO3D3xxxl 
/usr/bin/ld: cannot find -lhAcqVideo4Linux2xl 
/usr/bin/ld: cannot find -lhalconcpp10xl 
/usr/bin/ld: cannot find -lhalconcxl 
/usr/bin/ld: cannot find -lhdevenginecpp10xl 
/usr/bin/ld: cannot find -lusb-1.0-usan 
+0

に正しく書き込むために手動でどこにも 'hAcqArgos3D-P1xx'にリンクしていると気にする必要がありたいですか? 'CMakeLists.txt'ファイル全体を投稿できますか? – apalomer

+1

編集を参照して、私はコメントアウトしたものを除いて、完全なファイルを追加しました – MickBoe1

+0

ライブラリ名から 'lib'を削除するだけでしたか? 'target_link_libraries(treshhold halconc)' – JonatanE

答えて

0

あなたはcmakeのは

make VERBOSE=1 

でやっている、あなたは、生成されたコマンドと間違っているものを見つけることができるはずかを見ることができます。

コマンドについて確認しているだけ一度あなたが本当にあなたはどのようにcmakeの

関連する問題