首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake用绝对路径导出目标

CMake用绝对路径导出目标
EN

Stack Overflow用户
提问于 2017-11-22 21:51:51
回答 1查看 433关注 0票数 3

我正在开发一个静态库,并且正在使用CMake。这个图书馆需要加强。所以我做了以下几件事:

代码语言:javascript
复制
set(LIBRARY_NAME "MyLib")
set(LIBRARY_VERSION 1.0.0)
project(${LIBRARY_NAME} VERSION ${LIBRARY_VERSION})

set(Boost_USE_STATIC_LIBS   ON)
set(Boost_USE_MULTITHREADED ON) 
find_package(Boost COMPONENTS system filesystem regex thread date_time log log_setup REQUIRED)
include_directories(${Boost_INCLUDE_DIR})
link_directories(${Boost_LIBRARY_DIR})

add_library(${LIBRARY_NAME} STATIC xx.cpp)

target_link_libraries(${LIBRARY_NAME} PUBLIC ${Boost_LIBRARIES})

到现在为止一切都很好。

现在,我需要使这个库可以安装。因此,我遵循本教程https://cmake.org/cmake/help/v3.0/manual/cmake-packages.7.html

在我的机器上一切都很好。但是,当我将已安装的文件(通过调用make-install生成的文件)转移到另一台计算机并试图使用find_package(MyLib)时,会出现问题,称它可以在原机器上的某个位置找到boost。我深入研究了MyLibTargets.cmake文件,并看到了Boost库的绝对路径!

为什么会发生这种事?我怎么才能阻止这一切?

EN

回答 1

Stack Overflow用户

发布于 2017-11-22 22:10:38

如果您从另一台机器获取cmake构建目录并使用它,这将无法工作。cmake不打算支持来自同一工作目录的不同平台。

为此,您需要使用非源构建。但是,一旦使用cmake进行了就地构建,目录就会被烧毁,源外构建不再适用于此源树。在这种情况下,您需要删除所有cmake临时文件和文件夹,以使源树再次工作。

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

https://stackoverflow.com/questions/47444421

复制
相关文章

相似问题

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