Conan新建模板项目编译失败:mlpack.h头文件未找到求助
问题描述
通过Conan官方模板创建项目,执行命令:conan new cmake_lib -d name=mlpackmsvc -d requires=mlpack/4.4.0
随后执行conan build .时,出现编译错误:
C:\test\src\mlpackmsvc.cpp(3,10): error C1083: Cannot open include file: 'mlpack.h': No such file or directory [C:\test\build\mlpackmsvc.vcxproj] ERROR: conanfile.py (mlpackmsvc/0.1): Error in build() method, line 48 cmake.build() ConanException: Error 1 while executing
默认配置文件内容:
[settings] arch=x86_64 build_type=Release compiler=msvc compiler.cppstd=17 compiler.runtime=dynamic compiler.version=194 os=Windows
解决方法
错误源于默认生成的CMake配置未正确关联mlpack依赖的头文件路径,按以下步骤修复:
- 修改CMakeLists.txt:替换项目根目录下的
CMakeLists.txt内容,让CMake能自动识别mlpack的头文件和库路径:
cmake_minimum_required(VERSION 3.15) project(mlpackmsvc CXX) # 查找mlpack依赖包 find_package(mlpack REQUIRED) add_library(mlpackmsvc src/mlpackmsvc.cpp) # 链接mlpack官方目标,自动引入头文件路径 target_link_libraries(mlpackmsvc PRIVATE mlpack::mlpack) target_compile_features(mlpackmsvc PRIVATE cxx_std_17)
提前安装依赖:先执行命令确保mlpack依赖被正确下载并安装(若本地缓存无对应包):
conan install . --build=missing重新执行构建:再次运行构建命令:
conan build .验证conanfile.py配置:确认
conanfile.py的generate方法包含CMakeToolchain生成逻辑,确保Conan为CMake提供正确的依赖路径:
from conan import ConanFile from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout class MlpackmsvcConan(ConanFile): name = "mlpackmsvc" version = "0.1" settings = "os", "compiler", "build_type", "arch" options = {"shared": [True, False], "fPIC": [True, False]} default_options = {"shared": False, "fPIC": True} def config_options(self): if self.settings.os == "Windows": del self.options.fPIC def layout(self): cmake_layout(self) def generate(self): tc = CMakeToolchain(self) tc.generate() def build(self): cmake = CMake(self) cmake.configure() cmake.build()
内容的提问来源于stack exchange,提问作者One_Cable5781
相关产品推荐
相关产品推荐

