CMake add_custom_target COMMAND 查找文件并执行
CMake add_custom_target COMMAND find files and exec
我有一个 .cmake 文件和一个自定义目标,我需要在其中添加一个命令来查找和签署 apk 文件。我执行以下操作:
add_custom_target(${APK_BUILD_TARGET} ALL
COMMAND find ${APK_DIR} -name "*.apk" -exec jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore myKey.keystore -storepass myStorePass -keypass myKeyPass {} myName \;
)
我一直收到错误消息
find: missing argument to `-exec'
如果我单独执行命令,在控制台中,它工作正常。我对一个简单的 echo 命令有同样的问题:
COMMAND find ${APK_DIR} -name "*.apk" -exec echo {} \;
我假设在 add_custom_target 的 COMMAND 中执行此操作时缺少某些内容,但是什么?
编辑:
这适用于 echo 命令,但不适用于 jarsigner,它仍然给出之前的错误:
COMMAND find ${APK_DIR} -name "*.apk" -exec echo {} +
关注这个post
How to use find -exec in CMake execute_process?
终于找到正确的命令行了:
add_custom_target(${APK_BUILD_TARGET} ALL
COMMAND find ${APK_DIR} -name "*.apk" -exec jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore myKey.keystore -storepass myStorePass -keypass myKeyPass {} myName "\;"
)
所以用“\;”而不仅仅是 \;
我有一个 .cmake 文件和一个自定义目标,我需要在其中添加一个命令来查找和签署 apk 文件。我执行以下操作:
add_custom_target(${APK_BUILD_TARGET} ALL
COMMAND find ${APK_DIR} -name "*.apk" -exec jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore myKey.keystore -storepass myStorePass -keypass myKeyPass {} myName \;
)
我一直收到错误消息
find: missing argument to `-exec'
如果我单独执行命令,在控制台中,它工作正常。我对一个简单的 echo 命令有同样的问题:
COMMAND find ${APK_DIR} -name "*.apk" -exec echo {} \;
我假设在 add_custom_target 的 COMMAND 中执行此操作时缺少某些内容,但是什么?
编辑:
这适用于 echo 命令,但不适用于 jarsigner,它仍然给出之前的错误:
COMMAND find ${APK_DIR} -name "*.apk" -exec echo {} +
关注这个post How to use find -exec in CMake execute_process?
终于找到正确的命令行了:
add_custom_target(${APK_BUILD_TARGET} ALL
COMMAND find ${APK_DIR} -name "*.apk" -exec jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore myKey.keystore -storepass myStorePass -keypass myKeyPass {} myName "\;"
)
所以用“\;”而不仅仅是 \;