CMake无法解析运行时目录路径

运行cmake CMakeLists.txt后

我收到以下警告

CMake Warning at src/CMakeLists.txt:32 (add_executable):
  Cannot generate a safe runtime search path for target MMPEditor because
  files in some directories may conflict with libraries in implicit
  directories:

runtime library [libQt5Widgets.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
  /home/ch/Qt/5.2.1/gcc_64/lib
runtime library [libQt5Core.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
  /home/ch/Qt/5.2.1/gcc_64/lib
runtime library [libQt5Gui.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
  /home/ch/Qt/5.2.1/gcc_64/lib
runtime library [libQt5OpenGL.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
  /home/ch/Qt/5.2.1/gcc_64/lib

其中一些库可能找不到。

这对一个文件被另一个文件隐藏意味着什么?我如何让CMake确定哪个文件夹是正确的链接?


您的系统库与您的本地自定义生成Qt库冲突。 它是一个警告,但由于此原因,您的应用程序中可能无法获得预期的结果。 您需要告诉CMake,它应该在搜索CMakeModule中的库时排除系统路径。 从这个文档

如果指定了NO_DEFAULT_PATH,则不会将其他路径添加到搜索中。

同样在相同的文档中,还提到了另外一个标志NO_CMAKE_SYSTEM_PATH ,它只包含特定于平台的默认路径。


如果你正在处理find_library

find_library(LIBRARY_NAME PATHS "/usr/lib/x86_64-linux-gnu" NO_DEFAULT_PATH) where

  • PATHS代表库的确切路径
  • NO_DEFAULT_PATH表示cmake不会在其他地方搜索
  • 检查lib的值并包含带有message(status, ${LIBRARY_NAME})路径message(status, ${LIBRARY_NAME})


    如果你正在处理find_package

    这比前面的例子稍微复杂一点,但它本质上是一样的。

    对于每个软件包,您必须运行find_package

  • 使用名称Find<Packagename>.cmake创建文件,例如,如果您正在寻找cppunit,则必须创建FindCPPUNIT.cmake

  • 在该文件中,你必须运行find_path上包括文件和find_library上LIB文件,就像“如果你正在处理find_library ”。

    find_path(CPPUNIT_INCLUDE_DIR PATHS "/usr/include/x86_64-linux-gnu" NO_DEFAULT_PATH)       
    find_library(CPPUNIT_LIBRARY PATHS "/usr/lib/x86_64-linux-gnu" NO_DEFAULT_PATH)
    

    然后您必须将文件的路径添加到CMAKE_MODULE_PATH

  • 链接地址: http://www.djcxy.com/p/78255.html

    上一篇: CMake cannot resolve runtime directory path

    下一篇: pkg check haddock warnings