CMake 设置使用不正确的参数数调用的目标属性

CMake set target properties called with incorrect number of arguments

本文关键字:数数 调用 目标 属性 参数 CMake 不正确 设置      更新时间:2023-10-16

我正在尝试在我的项目中使用OpenCV库,但我在运行时收到此错误:

生成命令失败。执行进程时出错 D:\Sdk\cmake\3.6.4111459\bin\cmake.exe 带参数 {-HC:\Users\Mouad AITALI\AndroidStudioProjects\BGREMOVER\app -BC:\Users\Mouad AITALI\AndroidStudioProjects\BGREMOVER\app.cxx\cmake\debug\arm64-v8a -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-16 -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\Users\Mouad AITALI\AndroidStudioProjects\BGREMOVER\app\build\intermediates\cmake\debug\obj\arm64-v8a -DCMAKE_BUILD_TYPE=调试 -DANDROID_NDK=D:\Sdkdk\19.2.5345600 -DCMAKE_CXX_FLAGS=-std=c++11 -DCMAKE_TOOLCHAIN_FILE=D:\Sdkdk\19.2.5345600\build\cmake\android.toolchain.cmake -DCMAKE_MAKE_PROGRAM=D:\Sdk\cmake\3.6.4111459\bininja.exe -GAndroid Gradle - Ninja} -- 配置不完整,发生错误!参见 "C:/Users/Mouad AITALI/AndroidStudioProjects/BGREMOVER/app/.cxx/cmake/debug/arm64-v8a/CMakeFiles/CMakeOutput.log"。

CMake Error at CMakeLists.txt:13 (set_target_properties(:
set_target_properties调用的参数数量不正确。

CMakeLists.txt

#declare folder path
set(pathToProject C:\Users\Mouad;AITALI\AndroidStudioProjects\BGREMOVER)
cmake_minimum_required(VERSION 3.4.1)
set(CMAKE_VERBOSE_MAKEFILE on)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
include_directories(${pathToOpenCv}/sdk/native/jni/include)
#library location
add_library(lib_opencv SHARED IMPORTED)
set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION ${pathToProject}/app/src/main/jniLibs/${ANDROID_ABI}/libopencv_java3.so)
#define libraries
add_library(native-lib SHARED src/main/cpp/native-lib.cpp)
add_library(grabcut SHARED src/main/cpp/jni-grabcut-lib.cpp src/main/cpp/grabcutter_p.cpp src/main/cpp/grabcutter_p.h)
find_library(log-lib log)
#target libraries
target_link_libraries(native-lib ${log-lib} lib_opencv)
target_link_libraries(grabcut ${log-lib} lib_opencv)

如前所述,CMake 使用分号;来定义列表。因此,如果路径包含分号,则必须将定义括起来,并使用变量的位置pathToProject用双引号括起来:

set(pathToProject "C:\Users\Mouad;AITALI\AndroidStudioProjects\BGREMOVER")
...
set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION "${pathToProject}/app/src/main/jniLibs/${ANDROID_ABI}/libopencv_java3.so")

IMPORTED_LOCATION属性仅采用一个值。因此,当您为该属性提供列表时,set_target_properties()命令无法正确分析参数,从而产生错误。