代码之家  ›  专栏  ›  技术社区  ›  ymoreau

CMake可以始终强制编译特定文件吗?

  •  0
  • ymoreau  · 技术社区  · 5 年前

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

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

    显然,使用makefile是可能的: How do you force a makefile to rebuild a target

    编辑: 副本 CMake - always build specific file

    0 回复  |  直到 5 年前
        1
  •  4
  •   triclosan    5 年前

    您尝试应用的解决方案有点违背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)