首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CMake错误:目标在其INTERFACE_INCLUDE_DIRECTORIES中包含相对路径

CMake错误:目标在其INTERFACE_INCLUDE_DIRECTORIES中包含相对路径
EN

Stack Overflow用户
提问于 2019-10-14 16:49:13
回答 1查看 2.4K关注 0票数 1

我的意思是从Win10 + PortableApps Msys2下的CGAL包编译示例PortableApps。对于库本身,我使用预编译的包($ pacman -Qs cgal给出local/mingw-w64-x86_64-cgal 4.14-1)。我曾经能够在我以前的个人电脑中做到这一点,详见下面。

在将所有内容转移到一台新PC (简单地复制,它是PortableApps)之后,我用Msys2进行了系统更新(出于其他原因)。我照常进行:mkdir buildcd buildccmake ..。在按下Release以生成我得到的文件时,选择g模式和冗长的ON

代码语言:javascript
运行
复制
 CMake Error in CMakeLists.txt:
   Imported target "CGAL::CGAL" includes non-existent path
     "C:/building/msys64/mingw64/include"
   in its INTERFACE_INCLUDE_DIRECTORIES.  Possible reasons include:
   * The path was deleted, renamed, or moved to another location.
   * An install or uninstall procedure did not complete successfully.
   * The installation package was faulty and references files it does not
   provide.

在按e退出错误消息时,ccmake gui被退出,并且没有生成任何文件。

在谷歌搜索了一下之后,建议创建缺少的did,这似乎只是一个解决办法(我没有尝试修改)。我创造了那些脏东西然后我得到了

代码语言:javascript
运行
复制
 CMake Error in CMakeLists.txt:
   Target "CGAL::CGAL" contains relative path in its
   INTERFACE_INCLUDE_DIRECTORIES:

     "C:/building/msys64/mingw64/include"

,我怎么才能解决这个问题?,我在周围找不到合适的答案。

可能是相关的链接,但我找不到合适的解决方案:

https://gitlab.kitware.com/cmake/cmake/commit/634bb33f3aa3b7f2181a896c025976b52171524a

https://cmake.org/cmake/help/v3.12/manual/cmake-buildsystem.7.html

注意到:其他例子也是如此。

编辑:我不知道发生了什么变化,但是现在按下e退出错误消息(见上面),所有生成的文件都出现了,包括Makefile。因此,我可以按照以前的情况进行如下所述。无论是否存在缺失的dir,都会发生这种情况(错误消息更改,但我可以生成可执行文件)。AFAICT,唯一相关的改变是我刚刚安装了软件包,mingw-w64-x86_64-eigen3 (3.3.7-1)mingw-w64-x86_64-suitesparse (5.4.0-1)mingw-w64-x86_64-lapack (3.8.0-5),但是我认为这不重要。

以前的状况

为了编译和链接CGAL示例,在我以前的PC中,需要进行一些调整。编译进行得很好,但是链接需要一些调整。用于链接读取的示例命令行

代码语言:javascript
运行
复制
 /mingw64/bin/c++.exe -O3 -DNDEBUG  -Wl,--enable-auto-import CMakeFiles/reconstruction_structured.dir/reconstruction_structured.cpp.o  -o reconstruction_structured.exe -Wl,--out-implib,libreconstruction_structured.dll.a -Wl,--major-image-version,0,--minor-image-version,0 /mingw64/lib/lib/libmpfr.a /mingw64/lib/lib/libgmp.dll.a /mingw64/lib/lib/libCGAL.dll.a -lC:/building/msys64/mingw64/lib/libgmp.dll.a -lC:/building/msys64/mingw64/lib/libmpfr.a

所需的两种修复方法是

  1. 在每个( /mingw64/lib/lib/build.make)文件中用/mingw64/lib/替换link.txt
  2. 在每个-lC:/building/msys64/mingw64/lib/libgmp.dll.a文件中用-lgmp替换标志link.txt。同样适用于-lmpfr
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-15 04:53:02

运行此命令以查找CGAL CMake文件中提到错误目录C:/building/的所有位置:

代码语言:javascript
运行
复制
grep -r '/building/' /mingw64/lib/cmake/CGAL

对于每个实例,要么删除它,要么用更合适的东西替换它。

(注:我自己也没试过这个。)

这个错误的目录是MSYS2 (我试图在某一时刻修复 )的一个普遍问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58380995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档