python - 如何将 python 目录包含到 CMakeList.txt 文件中
问题描述
这是我的 CMakeList.txt 文件,我想包含 python3.9 目录并希望链接 python3.9 路径下的所有头文件和库。当我使用命令行运行它时,我使用了以下命令
g++ data.cpp -std=c++11 -I/usr/include/python3.9 -lpython3.9 -I/opt/mongo-cxx-driver/include/mongocxx/v_noabi -I/opt/mongo-cxx-driver/include/libmongoc-1.0 -I/opt/mongo-cxx-driver/include/bsoncxx/v_noabi -I/opt/mongo-cxx-driver/include/libbson-1.0 -L/opt/mongo-cxx-driver/lib64 -lmongocxx -lbsoncxx
使用上述命令可以正常工作,但是当我使用以下 CMakeList.txt 文件进行构建时。但它没有链接我的python库。我做错了什么?请帮忙
cmake_minimum_required(VERSION 3.2)
set(CMAKE_CXX_STANDARD 11)
add_subdirectory(../dlib dlib_build)
add_executable(testmongo data.cpp)
INCLUDE_DIRECTORIES("/usr/include/python3.9")
find_package(libmongocxx REQUIRED)
find_package(libbsoncxx REQUIRED)
include_directories(${LIBMONGOCXX_INCLUDE_DIR})
include_directories(${LIBBSONCXX_INCLUDE_DIR})
include_directories("/opt/mongo-cxx-driver/include/mongocxx/v_noabi")
include_directories("/opt/mongo-cxx-driver/include//bsoncxx/v_noabi")
include_directories("/opt/mongo-cxx-driver/include/libmongoc-1.0")
include_directories("/opt/mongo-cxx-driver/include/libbson-1.0")
include_directories("/opt/mongo-cxx-driver/lib64")
target_link_libraries(testmongo ${LIBMONGOCXX_LIBRARIES})
target_link_libraries(testmongo ${LIBBSONCXX_LIBRARIES})
target_link_libraries(testmongo dlib::dlib)
target_link_libraries(testmongo ${PYTHON_LIBRARIES})
一切都很好,除了python库链接
解决方案
include_directories
影响在它之后声明的目标。
add_executable(blabla ...) # does not use /some/dir
include_directories(/some/dir) # change!
add_executable(blabla2 ...) # uses /some/dir!
但根本不要使用include_directories
。改为使用target_include_directories
。
推荐阅读
- c# - Form.ShowDialog 方法
- highcharts - 负颜色和悬停状态 - highchart.js
- jupyter-notebook - 如何覆盖 jupyter notebook 中的 getpass 函数进行测试?
- angular - 禁用日期选择器中的文本字段。只需要使用日历图标。我怎样才能禁用文本字段
- ruby-on-rails - Heroku“演示”环境
- godot - (Godot 引擎)用 Tilemap 瓦片填充 2D 多边形
- apache-flink - Flink windowAll聚合比window进程?
- c++ - 如何在 eosio (c++) 中调用私有字段
- php - Laravel 中的约束关系
- ansible - 如何使用 Ansible 中的主机变量值更新角色的参数?