cmake_minimum_required(VERSION 3.10.2)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
#指明项目名称
project("myapplication" CXX)
#设置OpenCV_DIR路径
set(OpenCV_DIR "C:/Users/lenovo/Desktop/MyApplication/sdk/native/jni")
#于OpenCV_DIR路径下寻找OpenCV包
find_package(OpenCV REQUIRED )
#寻找".cpp" ".c"文件,将其设置为变量srcs
file(GLOB srcs "*.cpp" "*.c")
#寻找".hpp" ".h"文件,将其设置为变量hdrs
file(GLOB hdrs "*.hpp" "*.h")
#将路径"C:/Users/lenovo/Desktop/MyApplication/sdk/native/jni/include"设置为变量Opencv_INCLUDE_DIRS
set(Opencv_INCLUDE_DIRS "C:/Users/lenovo/Desktop/MyApplication/sdk/native/jni/include")
#将路径"C:/Users/lenovo/Desktop/oneTBB-master/include设置为变量TBB_PATH
set(TBB_PATH "C:/Users/lenovo/Desktop/oneTBB-master/include")
#指明头文件库
include_directories("${Opencv_INCLUDE_DIRS}")
include_directories("${TBB_PATH}")
#将搜索得到的".hpp" ".h" ".cpp" ".c"文件以及native-lib.cpp文件加入库"native-lib"
add_library(native-lib SHARED native-lib.cpp ${srcs} ${hdrs})
#找到log库,将其命名为"log_lib"
find_library(log-lib log)
#将库"log-lib","TBB_PATH","Opencv_INCLUDE_DIRS"链接到库"native-lib"
target_link_libraries(native-lib ${log-lib} ${TBB_PATH} ${Opencv_INCLUDE_DIRS})
请帮我看看为什么as中这样书写cmakelist.txt无法调用opencv中头文件?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
你知我知皆知 2024-07-24 14:31关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
在使用CMake构建Android应用时,如果你尝试使用
cmake_minimum_required()来设定最低版本,然后使用find_package()和find_library()来查找所需的库和头文件,并使用target_link_libraries()来链接这些库,那么你可能遇到的问题是:find_package()和find_library()命令会自动检测并安装所需依赖库。然而,在你的例子中,你需要手动指定OpenCV_DIR路径和TBB_PATH路径。- 在你的
cmake_minimum_required()语句中,CMAKE_CXX_STANDARD被设置为11(这是一个错误),应该改为CMAKE_CXX_STANDARD。 find_package()和find_library()命令需要一个包含所有必要的库和头文件的列表。在这种情况下,你需要提供完整的路径列表。
要解决这些问题,你可以按照以下步骤操作:
- 确保你的Android SDK和开发环境已正确配置。
- 将
OpenCV_DIR和TBB_PATH替换为你实际使用的路径。 - 更改
cmake_minimum_required()中的CMAKE_CXX_STANDARD。 - 在
cmake_minimum_required()后面添加完整的目标路径列表,例如:cmake_minimum_required(VERSION 3.10.2 TARGETS myapplication) - 编译和运行你的应用程序。
确保你在编译前检查是否有任何错误或警告,以确认你的依赖库已经正确安装和链接。如果问题仍然存在,请查看详细的错误消息并进行相应修改。
解决 无用评论 打赏 举报