我想在安卓建立项目使用新开发工具包的CMake。我想根据一些标志添加库,这在CMake中是可见的,带有一些公共部分,结果如下所示:
set(INFERENCE_ENGINE TFLITE)
set(COMMON_FILES "${SRC_DIR}/native-lib.cpp
${CRF_SRC}/permutohedral.cpp
${CRF_SRC}/unary.cpp
${CRF_SRC}/pairwise.cpp
${CRF_SRC}/objective.cpp
${CRF_SRC}/densecrf.cpp
${CRF_SRC}/labelcompatibility.cpp
${SRC_DIR}/utils.cpp
${SRC_DIR}/jniutils.cpp
${SRC_DIR}/timer.cpp
${SRC_DIR}/inference.cpp
${SRC_DIR}/backend/dcrf.cpp
${SRC_DIR}/sky/colorCV.cpp
${SRC_DIR}/sky/colorLoop.cpp
${neon_SRCS}"
)
if (${INFERENCE_ENGINE} STREQUAL TFLITE)
add_library(starfiltersdk SHARED
${COMMON_FILES}
${SRC_DIR}/backend/tflite.cpp
)
elseif(${INFERENCE_ENGINE} STREQUAL SNPE)
add_library(starfiltersdk SHARED
${COMMON_FILES}
${SRC_DIR}/backend/snpe.cpp
)
endif() 然而,我得到了:
Cannot find source file:
src/main/cpp/native-lib.cpp
libs/densecrf/src/permutohedral.cpp
libs/densecrf/src/unary.cpp
libs/densecrf/src/pairwise.cpp
libs/densecrf/src/objective.cpp
libs/densecrf/src/densecrf.cpp
libs/densecrf/src/labelcompatibility.cpp
src/main/cpp/utils.cpp
src/main/cpp/jniutils.cpp
src/main/cpp/timer.cpp
src/main/cpp/inference.cpp
src/main/cpp/backend/dcrf.cpp
src/main/cpp/sky/colorCV.cpp
src/main/cpp/sky/colorLoop.cpp
src/main/cpp/sky/blend.cpp这表明COMMON_FILES变量被视为一个文件。你知道如何修复它吗,或者我应该使用完全不同的方法(来实现add_library的这个通用部分)?
发布于 2020-12-17 23:27:03
CMake区分带引号的参数和不带引号的参数1.通过用引号将文件列表括起来,您创建了一个长参数,而add_library希望将每个源文件作为单独的参数接收。
将set(COMMON_FILES ...)更改为:
set(COMMON_FILES ${SRC_DIR}/native-lib.cpp
${CRF_SRC}/permutohedral.cpp
${CRF_SRC}/unary.cpp
${CRF_SRC}/pairwise.cpp
${CRF_SRC}/objective.cpp
${CRF_SRC}/densecrf.cpp
${CRF_SRC}/labelcompatibility.cpp
${SRC_DIR}/utils.cpp
${SRC_DIR}/jniutils.cpp
${SRC_DIR}/timer.cpp
${SRC_DIR}/inference.cpp
${SRC_DIR}/backend/dcrf.cpp
${SRC_DIR}/sky/colorCV.cpp
${SRC_DIR}/sky/colorLoop.cpp
${neon_SRCS}
)应该可以解决您显示的错误消息。
https://stackoverflow.com/questions/65341886
复制相似问题