C++项目引入PocketSphinx子模块编译报错:找不到pocketsphinx.h
解决PocketSphinx子模块编译头文件缺失问题
问题原因
编译时PocketSphinx自身源文件找不到pocketsphinx.h,是因为作为Git子模块引入时,CMake未将其include目录纳入头文件搜索路径;同时主项目未配置链接PocketSphinx库,后续也会触发链接错误。
修改方案
调整主项目CMakeLists.txt,具体代码如下:
cmake_minimum_required(VERSION 3.2.0) project(assistant) add_executable(${PROJECT_NAME} src/main.cpp) # 添加依赖子模块 add_subdirectory(dependencies/jsonpp) add_subdirectory(dependencies/pocketsphinx) # 统一配置头文件搜索路径 target_include_directories(${PROJECT_NAME} PRIVATE include dependencies/jsonpp/include dependencies/pocketsphinx/include ) # 链接所有依赖库 target_link_libraries(${PROJECT_NAME} PRIVATE jsoncpp curl pocketsphinx )
额外检查项
- 确认PocketSphinx子模块的
include目录下存在pocketsphinx.h,若缺失执行git submodule update --init --recursive拉取完整子模块依赖。 - 若链接时提示找不到
pocketsphinx库目标,查看PocketSphinx子模块的CMakeLists.txt,找到实际的库目标名称替换到target_link_libraries中。 - 清理
build目录后重新执行CMake配置和编译,避免缓存干扰。
内容的提问来源于stack exchange,提问作者Aniket Sharma
相关产品推荐
相关产品推荐

