使用XCode链接CGAL库

6
我已经使用Macports安装了CGAL。我在一个示例上运行了CMake,一切都正常。所以我尝试创建一个新项目,并从示例中复制所需的代码。因此,我还没有链接CGAL库,无法运行代码。我不确定如何在构建设置中进行链接。希望有人能指导我。
我正在尝试运行envelope2.cpp。

CGAL的文档解释了如何使用cmake。 - Marc Glisse
你想避免使用CMake吗? - lrineau
如果有任何简单的方法让XCode调用他们的CMake脚本,我会非常希望它能够在XCode内部构建。 - drewish
2个回答

8

您提到了MacPorts,但这里提供的是Homebrew的说明。它们应该非常相似,但您可能需要将一些路径从/usr/local更改为/opt/local

安装库

brew install cgal

添加头文件

  • 打开项目设置。
  • 选择项目。
  • 选择 Build Settings 选项卡。
  • 选择 All 过滤器。
  • 搜索 header search,您将找到正确的设置: Found the setting
  • 双击 Header Search Paths 旁边的路径。
  • 在详细信息弹出窗口中点击 + 按钮: enter image description here
  • 输入 /usr/local/include/
  • 单击详细信息弹出窗口外部以关闭它。

添加库文件

  • 打开项目设置。
  • 选择目标。
  • 选择 General 选项卡。
  • Linked Frameworks and Libraries 部分单击 + 按钮: enter image description here
  • 这时会出现一个选择对话框:
    Add Framework and Library dialog
  • 单击 Add Other... 按钮,然后会出现一个打开文件对话框。
  • 按下 Option + / 进入指定目录: Switch to /usr/local/lib
  • 输入 /usr/local/lib,然后单击 Go
  • 选择以下文件(按住 Command 键单击以一次选择多个):
    • libboost_thread-mt.dylib
    • libCGAL.dylib
    • libCGAL_Core.dylib
    • libgmp.dylib
    • libmpfr.dylib

1
感谢您提供详细的逐步回答。为了进一步补充这个答案: 即使按照上述步骤,我仍然无法编译我的CGAL C++程序。为了使它工作,我在“搜索路径”选项卡中进行了以下更改:
  • 始终搜索用户路径 --->
  • 用户头文件搜索路径---> /usr/local/include
然后它就可以工作了!我不明白为什么需要这些额外的步骤,如果有人知道如何避免这些步骤,请告诉我。
- sinner
有趣,下次更新这些说明的新版本时,我会添加一条注释。 - drewish
对于编译好的代码。 如果我将可执行文件复制粘贴到另一台电脑上,并复制粘贴 .dylib 文件,那么可执行文件能否运行?目前这样的工作流程不起作用。 - PetrasVestartasEPFL

0

当系统安装了cgal后,示例example/Envelope_2(包含一个CMakeLists.txt文件),可以这样运行:

cmake .
make
./convex_hull

或者进行一个非源码构建:

mkdir build
cd build
cmake ..
make
mv ../ch_points.dat .
./convex_hull

这是在安装了cgal的OS X上,使用brew进行安装,它会安装到/usr/local/...。使用MacPorts可能会有问题,因为它会将第三方软件包安装到/opt

根据如何指示CMake查找由MacPorts安装的库?,在CMakeLists.txt文件中添加以下内容(在find_package之前)可能会有所帮助:

list(APPEND CMAKE_LIBRARY_PATH /opt/local/lib)
list(APPEND CMAKE_INCLUDE_PATH /opt/local/include)

对于赏金,我真的在寻找一些XCode特定的指令。我应该提到我正在使用现有的Cinder项目,所以我尝试手动添加库和包含路径,并解决了大部分出现的错误,但卡在了ld抛出“重复符号__Z3foov”错误上。 - drewish
啊,所以快速运行 c++filt __Z3foov 显示我的问题是尝试将 foo() 测试函数放在被包含两次的头文件中。 - drewish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接