CMAKE add_custom_command仍然令人困惑

时间:2018-05-06 01:08:04

标签: android cmake

我查看了对cmake使用add_custom_command的响应,但无法让它在android studio中运行。我跑步时找不到目标。

add_custom_command( TARGET b.c.o
                    POST_BUILD
                    file(RENAME ${CMAKE_HOME_DIRECTORY}/newfolder/customer.txt ${CMAKE_HOME_DIRECTORY}/newfolder/used_customer.txt)
                  )

我得到以下内容:

CMake Error at CMakeLists.txt:73 (add_custom_command):
  No TARGET ')' has been created in this directory.
-- Configuring incomplete, errors occurred!
See also "C:/Documents/Android_files/local_app/BApp/.externalNativeBuild/cmake/debug/x86_64/CMakeFiles/CMakeOutput.log".

失败:构建因异常而失败。

出了什么问题:

A problem occurred configuring project ':BApp'.
    > executing external native build for cmake C:\Documents\Android_files\local_app\BApp\CMakeLists.txt

Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

https://help.gradle.org

获取更多帮助

在32s内建立失败

每次运行时似乎无法找到目标文件。 你能为这件事提供一些帮助吗?

1 个答案:

答案 0 :(得分:0)

您无法在add_custom_command中嵌套cmake命令(file是一个cmake命令)。 add_custom_command中的命令在终端中执行,而不是在cmake脚本中执行。 您可以在linux中使用mv来重命名文件:

add_custom_command(TARGET b.c.o POST_BUILD COMMAND mv ${CMAKE_HOME_DIRECTORY}/newfolder/customer.txt ${CMAKE_HOME_DIRECTORY}/newfolder/used_customer.txt)

您可以在Windows中使用rename重命名文件:

add_custom_command(TARGET b.c.o POST_BUILD COMMAND rename ${CMAKE_HOME_DIRECTORY}/newfolder/customer.txt ${CMAKE_HOME_DIRECTORY}/newfolder/used_customer.txt)

您可以使用cmake命令模式(可能是最佳选择):

add_custom_command(TARGET b.c.o POST_BUILD COMMAND ${CMAKE_COMMAND} -E rename ${CMAKE_HOME_DIRECTORY}/newfolder/customer.txt ${CMAKE_HOME_DIRECTORY}/newfolder/used_customer.txt)

或者您可以输入cmake命令:

  file(RENAME ${CMAKE_HOME_DIRECTORY}/newfolder/customer.txt ${CMAKE_HOME_DIRECTORY}/newfolder/used_customer.txt)

在名为custom_command.cmake的单独文件中执行:

   add_custom_command(TARGET b.c.o POST_BUILD COMMAND ${CMAKE_COMMAND} -P custom_command.cmake -D CMAKE_HOME_DIRECTORY=${CMAKE_HOME_DIRECTORY} )