CMake导出的库-在客户端应用程序中找不到include/Lib路径
CMake Exported Lib - Cannot find include/lib paths in client app
所以我有两个CMake项目,MyLib和MyApp。我构建、安装MyLib并将其导出到一个自定义目录(现在只使用我的桌面:/Users/MyName/desktop/InstallDir(,然后我想在构建MyApp时使用find_package((来查找MyLin。
所以我的MyLib的CMakeLists.txt文件有以下代码:
set(CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/../../install")
target_include_directories(mylib PUBLIC
$<INSTALL_INTERFACE:include> )
install(TARGETS mylib
EXPORT mylib-targets
PUBLIC_HEADER DESTINATION include
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin)
install(EXPORT mylib-targets
NAMESPACE mylib::
FILE mylib-config.cmake
DESTINATION lib/cmake/mylib)
export(PACKAGE mylib)
这将在install/cmake/mylib 中创建一个mylib-config.cmake文件
然后在MyApp的CMakeLists.txt文件中,我有以下代码
set(mylib_DIR "${CMAKE_SOURCE_DIR}/../../install/lib/cmake/mylib")
set(CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/../../install")
find_package(mylib REQUIRED)
message("Include dirs: " ${mylib_INCLUDE_DIRS} )
message("Libs: " ${mylib_LIBRARIES} )
但是,当我构建MyApp时,mylib_INCLUDE_DIRS和mylib_LIBRARIES都是空的。如果我检查mylib-config.cmake文件,这些变量也没有在其中定义,但我认为在导出包时,这些变量是自动生成的?
我错过了哪些步骤?
CMake生成的导出文件定义IMPORTED目标,而不是变量。正是针对这些目标,您在install(EXPORT)
命令中设置了NAMESPACE
选项。
像XXX_INCLUDE_DIRS
和XXX_LIBRARIES
这样的变量是由一些FindXXX.cmake
脚本(旧式(设置的。此外,如果XXXConfig.cmake
脚本是手动编写的,则可以在该脚本中设置这些变量(该脚本可以包括CMake生成的脚本,并且可以用变量包装IMPORTED目标(。
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- pip install uwsgi 失败,出现 /usr/local/include/string/string.h:7:10:致命错误:找不到'sstream'文件?
- CMake导出的库-在客户端应用程序中找不到include/Lib路径
- 编译时得到错误:找不到'QtGui/QAction'文件 #include < QtGui/QAction>
- Eclipse CDT 找不到 #include <__debug>
- XCode 找不到 zmq.h,即使它位于 /usr/local/include 和标头搜索路径中
- 为什么 CodeBlocks (13.12) 找不到 C:\MinGW\include?
- /usr/local/include/tk.h:71:13:致命错误:安装 Python 库时找不到'X11/Xlib.h'文件
- 将Qt与eclipse一起使用,#include <QSqlDatabase> 会导致找不到文件
- g++ #include 找不到文件编译器错误
- Xcode 6.0.1版gmp.h头文件找不到,尽管gmp.h和gmpxx.h在local/include中
- Linux g++编译错误:/usr/bin/ld:找不到-l/usr/local/include
- 用于第三方API的c++ #include -永远找不到一些头文件
- OSX 10.11.6 Make找不到指定的头文件——include-dir不起作用
- Visual Studio在发布模式下找不到boost include文件(在调试中工作)
- VC++找不到 #include < unistd.h> #include <getopt.h>
- CMake 错误在 CMakeLists.txt:56 (include): 包含找不到加载文件: gmxVersion