我怎样才能 cmake/make 一个 CGAL 二进制文件正确链接到 OSX 上的 libassimp dylib?

How can I cmake/make a CGAL binary that correctly links against a libassimp dylib on OSX?

我认为这对于了解这些东西的人来说非常简单;请过度解释,因为我不习惯 OSX.

上的 cmake 或命令行开发

我正在开始使用 CGAL,并从终端(http://doc.cgal.org/latest/AABB_tree/ 第 3.2 节)中正确构建和 运行ning 的示例之一。我将该代码复制到它自己的文件夹中的 .cpp,然后

/opt/local/bin/cgal_create_cmake_script
cmake .
make .

这很好用; cgal 创建脚本引导一个 cmake 文件,然后从那里开始一个标准的构建过程。

我现在对使用 libassimp 添加到该示例项目感兴趣,以便加载 .PLY 文件。在另一个文件夹中,我获取了 libassimp 的源代码,并通过以下方式安装:

cmake -G 'Unix Makefiles'
make
sudo make install

这似乎是成功的; /usr/local/lib/libassimp 中有几个 libassimp .h 文件,还有一个 /usr/local/lib/libassimp.dylib

回到我的 CGAL 示例项目,我尝试

#include <assimp/Importer.hpp>

int main() {
    Assimp::Importer importer;
    return 0;
}

(即只是为了测试库的成功集成。)

当我 运行 make 我得到:

[100%] Building CXX object CMakeFiles/sample.dir/sample.cpp.o
Linking CXX executable sample
Undefined symbols for architecture x86_64:
  "Assimp::Importer::Importer()", referenced from:
      assimp_test() in sample.cpp.o
      _main in sample.cpp.o
  "Assimp::Importer::~Importer()", referenced from:
      assimp_test() in sample.cpp.o
      _main in sample.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [sample] Error 1
make[1]: *** [CMakeFiles/sample.dir/all] Error 2
make: *** [all] Error 2

这并不让我吃惊;我大概需要向 CMakelists.txt 添加一些内容。但是什么!

在询问后找到了这个,这给了我需要的线索:How to find a library with cmake?

基本上我将 CMakelists.txt 中的相关行更改为:

  create_single_source_cgal_program( "sample.cpp" )

  target_link_libraries (sample assimp)

这是可行的,因为显然当你告诉 cmake 到 target_link_libraries(EXENAME FOO) 时,它会寻找 /usr/local/lib/libFOO.dylib