CMake 在更改源文件时不会重新编译源文件?

CMake doesn't recompile source file when it's changed?

本文关键字:源文件 新编译 编译 CMake      更新时间:2023-10-16

我正在使用 cmake 来构建我的库,当我更改LIB_SRCS其中一个文件并在命令行中键入 make 时,它不会重新编译该文件!

set (LIB_SRCS
  ${PROJECT_SOURCE_DIR}/src/A.cpp
  ${PROJECT_SOURCE_DIR}/src/B.cpp
  ${PROJECT_SOURCE_DIR}/src/C.cpp
)
add_library (mylib SHARED ${LIB_SRCS})
add_dependencies(mylib ${LIB_SRCS})

您应该检查的第一件事是 .o 和 .so 的修改时间与 .cpp当 .cpp 的 mtime 大于 .o 时,它应该重建。即使没有通过"触摸"文件进行修改,您也可以对其进行测试.cpp。

在某些奇怪的情况下,由于多种原因,时间可能会不匹配,然后它将无法正常工作。可能的原因可能是例如一些玩系统时间的恶魔,或使用网络文件系统等。

然而,在现实生活中,通常不是犯错,而是开发人员的错误:-(