生成过程中的CMake运行命令

时间:2012-12-04 15:09:52

标签: cmake

我正在尝试让cmake下载一些文件。当按下“生成”按钮时,是否可以执行此操作一次?我只能将其设置为每次按下配置按钮或每次构建项目时运行。

2 个答案:

答案 0 :(得分:5)

CMakeLists在配置时处理,因此您无法在生成时执行操作。但是,您可以设置缓存变量并将其用作标志,以确定是否应该进行下载。类似的东西:

if(NOT DOWNLOAD_HAPPENED)
  execute_process( ... do the downloading stuff ... )
  set(DOWNLOAD_HAPPENED TRUE CACHE BOOL "Has the download happened?" FORCE)
endif()

这将在第一次配置时执行下载,并且永远不会再次执行(除非用户手动重置DOWNLOAD_HAPPENED)变量。但是,如果你确实需要在 last 配置下进行下载,那么你就不幸了,AFAIK。

答案 1 :(得分:3)

这样的事情应该会有所帮助:

add_custom_command(
   OUTPUT myfile.txt
   COMMAND wget http://myurl.com/myfile.txt
   )

编辑1

需要将其作为主命令的依赖项:

add_dependencies(<myprogram> wget)