是否有人能够发布一个如何编译使用libfreenect2的代码的简单示例?安装库后,在我的主目录中创建以下结构:
→ 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
我尝试使用与pkg-config维基百科页面上类似的行编译.pc文件:
gcc -o test test.c $(pkg-config --libs --cflags libpng)
但是出现了这个错误:
./test: error while loading shared libraries: libfreenect2.so.0.2: cannot open shared object file: No such file or directory
显然,我搞砸了某个地方的编译过程,但我不知道在哪里看,因为这是在运行时发生的错误,而不是在编译时。还有一个使用库安装创建的.cmake
文件,我相信这会导致更强大和更合适的解决方案,但我不完全确定如何使用它并且无法找到简单的指南显示如何这样做。任何有关初学者友好文档的链接也不胜感激。在libfreenect2的文档中,它说在编译cmake -Dfreenect2_DIR=$HOME/freenect2/lib/cmake/freenect2
时使用这一行 - 这是我在创建库或创建应用程序时必须使用的东西吗?
另一个与切向相关的问题是,将/include
和/lib
目录分别移至/usr/local/include
和/usr/local/lib
会更好吗?我相信会在系统范围内“安装”库,但我想有一些原因,libfreenect2不能自动执行,我不确定是什么。
答案 0 :(得分:1)
好吧,我只使用cmake
和我创建的CMakeLists.txt
文件。这样做:
创建一个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})
在这个文件中,我假设我们要编译使用main.cpp
的{{1}}文件。因此,在您的本地目录中使用终端创建libfreenect2
文件夹:
build
然后,在终端中运行命令:
mkdir build && cd build
这应该在build文件夹中创建cmake -Dfreenect2_DIR=$HOME/freenect2/lib/cmake/freenect2 .. && make
可执行文件。 请注意,此cmake命令指定freenect2目录。在这种情况下,我假设它被放置在main
目录中。
但是,我知道必须输入那个长cmake命令或在终端历史记录中搜索它可能对某些人来说很无聊。因此,可以嵌入这样的命令:
/home
之后,只需在终端中运行: mkdir build&& cd build&& cmake ..&制作
This回答是第二种编译代码方式的来源。
希望这有帮助!