2016-05-30 5 views
0

libfreenect2を使用するコードをコンパイルする方法の簡単な例を誰でも投稿できますか?libfreenect2で構築する

gcc -o test test.c $(pkg-config --libs --cflags libpng) 
:私はPKG-config設定のWikipediaのページにこのような行を使用して.PCファイルをコンパイルしようとし

→ tree freenect2 
freenect2 
├── include 
│   └── libfreenect2 
│    ├── config.h 
│    ├── export.h 
│    ├── frame_listener.hpp 
│    ├── frame_listener_impl.h 
│    ├── libfreenect2.hpp 
│    ├── logger.h 
│    ├── packet_pipeline.h 
│    └── registration.h 
└── lib 
    ├── cmake 
    │   └── freenect2 
    │    └── freenect2Config.cmake 
    ├── libfreenect2.so -> libfreenect2.so.0.2 
    ├── libfreenect2.so.0.2 -> libfreenect2.so.0.2.0 
    ├── libfreenect2.so.0.2.0 
    └── pkgconfig 
     └── freenect2.pc 

:ライブラリをインストールした後、次のような構造は私のホームディレクトリに作成されます

しかし、このエラーを持つまでになった:

./test: error while loading shared libraries: libfreenect2.so.0.2: cannot open shared object file: No such file or directory 

はもちろん、私はどこかにコンパイルプロセスを台無しに、これはエラーがRUで発生しているので、私はどこを見れするか分かりませんコンパイル時ではなくn時間です。ライブラリのインストールで作成された.cmakeファイルもありますが、これは確かに堅牢で適切な解決策につながりますが、その使い方が完全にはわかりませんし、簡単なガイドを見つけることができませんでしたそうするために。初心者に優しいドキュメンテーションへのリンクもありがとうございます。 libfreenect2のドキュメントでは、cmake -Dfreenect2_DIR=$HOME/freenect2/lib/cmake/freenect2をコンパイルするときにこの行を使用すると書かれています。これはライブラリを作成するときやアプリケーションを作成するときに使用しなければならないものですか?

もう1つの接線に関連する質問は、/include/libディレクトリをそれぞれ/usr/local/include/usr/local/libに移動する方が良いでしょうか?私はそれがシステム全体にライブラリを "インストール"すると信じていますが、libfreenect2が自動的にそれをしない何らかの理由があると思います。

+0

いつものように、標準的な場所にないライブラリとリンクするときには、実行可能なmakeのためにRPATHを調整する必要があります。gccで何百万という例があります。 CMakeを使わないので、 '.cmake'ファイルは無関係で、' cmake'タグもありません。 – Tsyvarev

答えて

1

まあ、私はちょうど私が作成CMakeLists.txtファイルでcmakeを使用しています。このように行います。

はCMakeLists.txtファイルを作成します。

cmake_minimum_required(VERSION 2.8 FATAL_ERROR) 
project("My Project") 

set(CMAKE_CXX_FLAGS "-std=c++11") 

find_package(freenect2 REQUIRED) 

include_directories("/usr/include/libusb-1.0/") 

INCLUDE_DIRECTORIES(
    ${freenect2_INCLUDE_DIR} 
) 

add_executable(main ./main.cpp) 

target_link_libraries(main ${freenect2_LIBRARIES}) 

をこのファイルでは、私たちはlibfreenect2を使用していますmain.cppファイルをコンパイルするとします。 、そして、

mkdir build && cd build 

をターミナルで次のコマンドを実行します:だから、あなたのローカルディレクトリにターミナルを使用して、buildフォルダを作成

cmake -Dfreenect2_DIR=$HOME/freenect2/lib/cmake/freenect2 .. && make 

これは、ビルドフォルダ内main実行可能ファイルを作成する必要があります。 このcmakeコマンドはfreenect2ディレクトリを指定します。この場合、私はそれが/homeディレクトリに置かれたと仮定します。

はしかし、私は長いcmakeのコマンドを入力するか、一部の人にとって退屈かもしれターミナル履歴にそれを検索する必要があることを理解しています。ちょうどターミナルでこれを実行し、

cmake_minimum_required(VERSION 2.8 FATAL_ERROR) 
project("My Project") 

set(CMAKE_CXX_FLAGS "-std=c++11") 
# Set cmake prefix path to enable cmake to find freenect2 
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} $ENV{HOME}/freenect2/lib/cmake/freenect2) 
find_package(freenect2 REQUIRED) 

include_directories("/usr/include/libusb-1.0/") 

INCLUDE_DIRECTORIES(
    ${freenect2_INCLUDE_DIR} 
) 

add_executable(main ./main.cpp) 

target_link_libraries(main ${freenect2_LIBRARIES}) 

後::だから、次のようにコマンドを埋め込むことが可能である ます。mkdir & & cmakeのを構築& & CDを構築.. &は

This答えは私だった作りますコードをコンパイルするこの第2の方法のソース。

希望すると便利です。

関連する問題