CMake Error: Target contains relative path in its INTERFACE_INCLUDE_DIRECTORIES
CMake Error: Target contains relative path in its INTERFACE_INCLUDE_DIRECTORIES
我的意思是在 Win10 + PortableApps Msys2 下从 CGAL 包编译示例 Advancing_front_surface_reconstruction
。
对于库本身,我使用预编译包($ pacman -Qs cgal
给出 local/mingw-w64-x86_64-cgal 4.14-1
)。
我曾经能够在我以前的 PC 上执行此操作,请参阅下面的详细信息。
把所有东西都转移到一台新电脑上(简单的复制,就是PortableApps)后,我在Msys2做了一次系统更新(其他原因需要)。
我照常进行:mkdir build
、cd build
、ccmake ..
。选择 Release
模式和冗长 ON
,按 g
生成文件后我得到
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 已退出并且没有生成任何文件。
谷歌搜索了一下后,this suggested creating the missing dirs, which seems merely a workaround (I did not try adapting this)。
我创建了那些目录,然后我得到了
CMake Error in CMakeLists.txt:
Target "CGAL::CGAL" contains relative path in its
INTERFACE_INCLUDE_DIRECTORIES:
"C:/building/msys64/mingw64/include"
我该如何解决这个问题?
我周围没有找到合适的答案。
可能与 link 相关,但我找不到合适的解决方案:
https://gitlab.kitware.com/cmake/cmake/commit/634bb33f3aa3b7f2181a896c025976b52171524a
https://cmake.org/cmake/help/v3.12/manual/cmake-buildsystem.7.html
注意:
其他示例也发生了同样的情况。
编辑:
我不知道发生了什么变化,但现在按 e
退出错误消息(见上文)所有生成的文件都存在,包括 Makefile
。
因此,我可以按照 之前的情况 中所述进行操作。
无论有没有 missing dirs 都会发生这种情况(错误消息会更改,但我可以生成我的可执行文件)。
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)
, 但我认为这无关紧要。
以前的情况
要编译和 link CGAL 示例,在我以前的 PC 中,需要进行一些调整。
编译很顺利,但是 linking 需要一些调整。
为 linking 读取
生成的示例命令行
/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
两种类型的必需修复是
在每个 (link.txt
;build.make
) 文件中用 /mingw64/lib/
替换 /mingw64/lib/lib/
。
在每个 link.txt
文件中用 -lgmp
替换标志 -lC:/building/msys64/mingw64/lib/libgmp.dll.a
。 -lmpfr
.
同样
运行 此命令用于查找 CGAL CMake 文件中提及错误目录 C:/building/
的所有位置:
grep -r '/building/' /mingw64/lib/cmake/CGAL
对于每个实例,将其删除或替换为更合适的内容。
(注意:我自己没试过。)
这个错误的目录是我 attempted to fix at one point.
的 MSYS2 的一个普遍问题
我的意思是在 Win10 + PortableApps Msys2 下从 CGAL 包编译示例 Advancing_front_surface_reconstruction
。
对于库本身,我使用预编译包($ pacman -Qs cgal
给出 local/mingw-w64-x86_64-cgal 4.14-1
)。
我曾经能够在我以前的 PC 上执行此操作,请参阅下面的详细信息。
把所有东西都转移到一台新电脑上(简单的复制,就是PortableApps)后,我在Msys2做了一次系统更新(其他原因需要)。
我照常进行:mkdir build
、cd build
、ccmake ..
。选择 Release
模式和冗长 ON
,按 g
生成文件后我得到
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 已退出并且没有生成任何文件。
谷歌搜索了一下后,this suggested creating the missing dirs, which seems merely a workaround (I did not try adapting this)。 我创建了那些目录,然后我得到了
CMake Error in CMakeLists.txt:
Target "CGAL::CGAL" contains relative path in its
INTERFACE_INCLUDE_DIRECTORIES:
"C:/building/msys64/mingw64/include"
我该如何解决这个问题? 我周围没有找到合适的答案。
可能与 link 相关,但我找不到合适的解决方案:
https://gitlab.kitware.com/cmake/cmake/commit/634bb33f3aa3b7f2181a896c025976b52171524a
https://cmake.org/cmake/help/v3.12/manual/cmake-buildsystem.7.html
注意: 其他示例也发生了同样的情况。
编辑:
我不知道发生了什么变化,但现在按 e
退出错误消息(见上文)所有生成的文件都存在,包括 Makefile
。
因此,我可以按照 之前的情况 中所述进行操作。
无论有没有 missing dirs 都会发生这种情况(错误消息会更改,但我可以生成我的可执行文件)。
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)
, 但我认为这无关紧要。
以前的情况
要编译和 link CGAL 示例,在我以前的 PC 中,需要进行一些调整。 编译很顺利,但是 linking 需要一些调整。 为 linking 读取
生成的示例命令行 /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
两种类型的必需修复是
在每个 (
link.txt
;build.make
) 文件中用/mingw64/lib/
替换/mingw64/lib/lib/
。在每个
link.txt
文件中用-lgmp
替换标志-lC:/building/msys64/mingw64/lib/libgmp.dll.a
。-lmpfr
. 同样
运行 此命令用于查找 CGAL CMake 文件中提及错误目录 C:/building/
的所有位置:
grep -r '/building/' /mingw64/lib/cmake/CGAL
对于每个实例,将其删除或替换为更合适的内容。
(注意:我自己没试过。)
这个错误的目录是我 attempted to fix at one point.
的 MSYS2 的一个普遍问题