首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导入库的include_directories

导入库的include_directories
EN

Stack Overflow用户
提问于 2018-01-20 12:01:06
回答 1查看 2.7K关注 0票数 4

我正在用c++编写项目,在cmake中导入库有问题。正在导入的第三方库不传播包含目录。

根/CMakeLists.txt

代码语言:javascript
复制
# Top level CMakeLists.txt

cmake_minimum_required(VERSION 3.9.2 FATAL_ERROR)
project(camera_calib)

add_subdirectory(${PROJECT_SOURCE_DIR}/nana)

file(GLOB SRC "${PROJECT_SOURCE_DIR}/src/*.cpp")

add_executable(camera_calib_exe ${SRC})

target_include_directories(camera_calib_exe PRIVATE ${PROJECT_SOURCE_DIR}/include)
target_link_libraries(camera_calib_exe nana_lib)

/nana/CMakeLists.txt

代码语言:javascript
复制
# nana c++ gui CMakeLists.txt

cmake_minimum_required(VERSION 3.9.2 FATAL_ERROR)
project(nana VERSION 1.5.6 LANGUAGES CXX)

add_library(nana_lib STATIC IMPORTED)
set_property(TARGET nana_lib PROPERTY IMPORTED_IMPLIB_DEBUG ${PROJECT_SOURCE_DIR}/lib/nana_v141_Debug_x64.lib)
set_property(TARGET nana_lib PROPERTY IMPORTED_IMPLIB_RELEASE ${PROJECT_SOURCE_DIR}/lib/nana_v141_Release_x64.lib)
set_property(TARGET nana_lib PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PROJECT_SOURCE_DIR}/include)
#set_property(TARGET nana_lib PROPERTY INCLUDE_DIRECTORIES ${PROJECT_SOURCE_DIR}/include)

代码/src/main.cpp示例

代码语言:javascript
复制
#include <nana/gui.hpp>
#include <nana/gui/widgets/label.hpp>
#include <nana/gui/widgets/button.hpp>

int main(int argc, char** argv)
{
    nana::form fm(nana::rectangle(0, 0, 1900, 1000));
    fm.caption("Camera Calibration");

    nana::button btn_openCam(fm, nana::rectangle(1770, 20, 100, 30));
    btn_openCam.caption("Open cameras");
    btn_openCam.events().click(nana::API::exit_all);

    nana::button btn_closeCam(fm, nana::rectangle(1770, 20 + 30 + 20, 100, 30));
    btn_closeCam.enabled(false);
    btn_closeCam.caption("Close cameras");
    btn_closeCam.events().click(nana::API::exit_all);

    nana::button btn_exit(fm, nana::rectangle(1770, 900, 100, 30));
    btn_exit.caption("Exit");
    btn_exit.events().click(nana::API::exit_all);
    fm.show();
    nana::exec();

    std::cout << "lala";
    return 0;

}

错误列表是:

代码语言:javascript
复制
E1696   cannot open source file "nana/gui.hpp"
E1696   cannot open source file "nana/gui/widgets/label.hpp"
E1696   cannot open source file "nana/gui/widgets/button.hpp"

为什么camera_calib_exe目标的nana_lib目标不传播包括目录?如何解决这个问题?

提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-20 12:09:44

导入目标的范围很重要。尝试将GLOBAL选项添加到add_library()

代码语言:javascript
复制
add_library(nana_lib STATIC IMPORTED GLOBAL)

“目标名称在创建它的目录中和下面有作用域,但是全局选项扩展了可见性。”

参考

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

https://stackoverflow.com/questions/48355884

复制
相关文章

相似问题

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