如何包含 draco_dec 库?
how to include the draco_dec library?
我想为我的 c++ 项目包含 draco 库,我在 ubuntu 上用 cmake 构建了 draco。当我尝试添加任何 draco header 时,我看到 "include errors"。
我试过编译 header 文件,这个命令对一些 drace header 有效,但没有找到很多。
g++ -I "\wsl$\Ubuntu\home\antmedia\draco\src\draco" ObjContainer.cpp
错误:
" 没有这样的文件或目录 #include "draco/compression/config/compression_shared.h"
我在 draco 自述文件中看到了这个。但我没有得到它。
“如果您想为您的应用程序添加解码功能,您将需要包含 draco_dec 库。”
这是什么意思?我如何添加 draco_dec 库?
之后,尝试 - v:
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.5.0-3ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
COLLECT_GCC_OPTIONS='-I' '~localinclude' '-L~locallib' '-o' 'prog' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
/usr/lib/gcc/x86_64-linux-gnu/7/cc1plus -quiet -v -I ~localinclude -imultiarch x86_64-linux-gnu -D_GNU_SOURCE ObjContainer.cpp -quiet -dumpbase ObjContainer.cpp -mtune=generic -march=x86-64 -auxbase ObjContainer -version -fstack-protector-strong -Wformat -Wformat-security -o /tmp/cci0iuOa.s
GNU C++14 (Ubuntu 7.5.0-3ubuntu1~18.04) version 7.5.0 (x86_64-linux-gnu)
compiled by GNU C version 7.5.0, GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version isl-0.19-GMP
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/7"
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/include"
ignoring nonexistent directory "~localinclude"
#include "..." search starts here:
#include <...> search starts here:
/usr/include/c++/7
/usr/include/x86_64-linux-gnu/c++/7
/usr/include/c++/7/backward
/usr/lib/gcc/x86_64-linux-gnu/7/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
GNU C++14 (Ubuntu 7.5.0-3ubuntu1~18.04) version 7.5.0 (x86_64-linux-gnu)
compiled by GNU C version 7.5.0, GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version isl-0.19-GMP
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 3eb3dc290cd5714c3e1c3ae751116f07
In file included from ObjContainer.cpp:11:0:
ObjContainer.h:11:10: fatal error: draco/compression/encode.h: No such file or directory
#include "draco/compression/encode.h"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
查看项目的源码树,我想你只是弄错了路径;确实没有 draco/src/draco/draco/compression
.
这样的目录
您已经在 #include
指令中指定了 draco
子目录,因此请将其从包含路径中删除:
g++ -I "\wsl$\Ubuntu\home\antmedia\draco\src" ObjContainer.cpp
为方便起见,将下载的库安装在保存所有 您自己下载和编译的库的目录中。首先创建这样一个目录。示例:
mkdir ~/local
然后您需要配置 Draco 项目以在构建之前安装在该位置。在 draco/build_dir
目录中,执行:
cmake -DCMAKE_INSTALL_PREFIX=~/local ..
执行完上面的 cmake
后,您应该 make
(或 make -j
以使其更快)构建库,您可以将其与安装结果结合起来同时:
make -j install
Draco 创建了三个图书馆:
- 德拉科
- dracodec
- 天龙人
README
中提到的 draco_dec
可能是一个旧名称(或打字错误),因此通过在您的末尾添加编译器选项 -ldracodec
来包含 dracodec
g++
行。
编译自己的代码时。添加 -I
指向新创建的 include
目录和 -L
指向新创建的库的存储位置:
g++ -I "\wsl$\Ubuntu\home\antmedia\local\include" -L "\wsl$\Ubuntu\home\antmedia\local\lib" -o prog ObjContainer.cpp -ldracodec
仅当您尝试从 Windows 访问 wsl
目录时才应使用 \wsl$
路径(例如 CMD.EXE
window) .如果您尝试从 wsl
中编译 ObjContainer.cpp
,请改为像这样编译您自己的代码:
g++ -I ~/local/include -L ~/local/lib -o prog ObjContainer.cpp -ldracodec
通过始终将使用 cmake
和 make
构建的外部库安装在您家 (~/local
) 的同一目录中,您可以使用相同的两个 -I
和 -L
选项用于您在那里安装的所有内容。
我想为我的 c++ 项目包含 draco 库,我在 ubuntu 上用 cmake 构建了 draco。当我尝试添加任何 draco header 时,我看到 "include errors"。 我试过编译 header 文件,这个命令对一些 drace header 有效,但没有找到很多。
g++ -I "\wsl$\Ubuntu\home\antmedia\draco\src\draco" ObjContainer.cpp
错误: " 没有这样的文件或目录 #include "draco/compression/config/compression_shared.h"
我在 draco 自述文件中看到了这个。但我没有得到它。
“如果您想为您的应用程序添加解码功能,您将需要包含 draco_dec 库。”
这是什么意思?我如何添加 draco_dec 库?
之后,尝试 - v:
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.5.0-3ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
COLLECT_GCC_OPTIONS='-I' '~localinclude' '-L~locallib' '-o' 'prog' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
/usr/lib/gcc/x86_64-linux-gnu/7/cc1plus -quiet -v -I ~localinclude -imultiarch x86_64-linux-gnu -D_GNU_SOURCE ObjContainer.cpp -quiet -dumpbase ObjContainer.cpp -mtune=generic -march=x86-64 -auxbase ObjContainer -version -fstack-protector-strong -Wformat -Wformat-security -o /tmp/cci0iuOa.s
GNU C++14 (Ubuntu 7.5.0-3ubuntu1~18.04) version 7.5.0 (x86_64-linux-gnu)
compiled by GNU C version 7.5.0, GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version isl-0.19-GMP
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/7"
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/include"
ignoring nonexistent directory "~localinclude"
#include "..." search starts here:
#include <...> search starts here:
/usr/include/c++/7
/usr/include/x86_64-linux-gnu/c++/7
/usr/include/c++/7/backward
/usr/lib/gcc/x86_64-linux-gnu/7/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
GNU C++14 (Ubuntu 7.5.0-3ubuntu1~18.04) version 7.5.0 (x86_64-linux-gnu)
compiled by GNU C version 7.5.0, GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version isl-0.19-GMP
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 3eb3dc290cd5714c3e1c3ae751116f07
In file included from ObjContainer.cpp:11:0:
ObjContainer.h:11:10: fatal error: draco/compression/encode.h: No such file or directory
#include "draco/compression/encode.h"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
查看项目的源码树,我想你只是弄错了路径;确实没有 draco/src/draco/draco/compression
.
您已经在 #include
指令中指定了 draco
子目录,因此请将其从包含路径中删除:
g++ -I "\wsl$\Ubuntu\home\antmedia\draco\src" ObjContainer.cpp
为方便起见,将下载的库安装在保存所有 您自己下载和编译的库的目录中。首先创建这样一个目录。示例:
mkdir ~/local
然后您需要配置 Draco 项目以在构建之前安装在该位置。在 draco/build_dir
目录中,执行:
cmake -DCMAKE_INSTALL_PREFIX=~/local ..
执行完上面的 cmake
后,您应该 make
(或 make -j
以使其更快)构建库,您可以将其与安装结果结合起来同时:
make -j install
Draco 创建了三个图书馆:
- 德拉科
- dracodec
- 天龙人
README
中提到的 draco_dec
可能是一个旧名称(或打字错误),因此通过在您的末尾添加编译器选项 -ldracodec
来包含 dracodec
g++
行。
编译自己的代码时。添加 -I
指向新创建的 include
目录和 -L
指向新创建的库的存储位置:
g++ -I "\wsl$\Ubuntu\home\antmedia\local\include" -L "\wsl$\Ubuntu\home\antmedia\local\lib" -o prog ObjContainer.cpp -ldracodec
仅当您尝试从 Windows 访问 wsl
目录时才应使用 \wsl$
路径(例如 CMD.EXE
window) .如果您尝试从 wsl
中编译 ObjContainer.cpp
,请改为像这样编译您自己的代码:
g++ -I ~/local/include -L ~/local/lib -o prog ObjContainer.cpp -ldracodec
通过始终将使用 cmake
和 make
构建的外部库安装在您家 (~/local
) 的同一目录中,您可以使用相同的两个 -I
和 -L
选项用于您在那里安装的所有内容。