【问题标题】:Can CMake always force the compilation/build of a specific file? [duplicate]CMake 是否可以始终强制编译/构建特定文件? [复制]
【发布时间】:2020-07-26 22:28:58
【问题描述】:

我有一个使用 __DATE__ 的 C++ 文件来显示我的应用程序的构建日期。但是如果不修改这个文件,就不会重建,日期也不会更新。

CMake 能否始终重建该特定文件?

显然可以使用 makefile : How do you force a makefile to rebuild a target

编辑: CMake - always build specific file的副本

【问题讨论】:

  • 你看到this的回复了吗?
  • @squareskittles 我搜索了但没有找到这个问题,那显然是重复的,thx
  • 是的,似乎是,但下面的答案比重复问题中的答案要好。

标签: cmake


【解决方案1】:

您尝试应用的解决方案有点违反 CMake 原则,因为它可能会导致所有依赖目标的重建。

但是,您可以通过这样的方法实现这一目标

add_custom_command(TARGET ${PROJECT_NAME}
        PRE_BUILD
        COMMAND ${CMAKE_COMMAND} -E touch_nocreate ${CMAKE_CURRENT_SOURCE_DIR}/path/file.c) 

更新使用第二种方法:

add_custom_target(file_toucher 
        COMMAND ${CMAKE_COMMAND} -E touch_nocreate ${CMAKE_CURRENT_SOURCE_DIR}/path/file.c)

add_dependencies(${PROJECT_NAME} file_toucher)

【讨论】:

  • 该命令在构建之后调用 VisualStudio 以外的任何其他内容(我同时使用 VS 和 emscripten),所以它确实完全解决了我的问题。此外,VS 根本不调用我的命令,而是在 CMake 步骤,而不是构建步骤。
  • @ymoreau 它在 macOS 上对我有用。无论如何,我会用更便携的解决方案更新我的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-16
  • 2014-11-12
  • 1970-01-01
  • 2016-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多