使用这个极其简单的设置:
# CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(foo)
add_executable(foo src/foo.cc include/foo.h)
target_include_directories(foo PRIVATE "include")
// src/foo.cc
#include "foo.h"
int main() {}
// include/foo.h
/* whatever */
我希望cmake在include/foo.h更改时重新编译src/foo.cc,但是在使用Makefile生成器时它不会这样做。如果foo.h
与foo.cc
位于同一目录中,或者foo.cc
指定了完整的相对路径而不是依赖于包含路径,则可以使用此方法。
我做错了什么?
发布于 2019-07-23 22:05:08
事实证明,此行为是在CMake 3.15中引入的错误:https://gitlab.kitware.com/cmake/cmake/issues/19507
3.14.6和更早版本在include/foo.h
更改时重新编译src/foo.cc
,如预期的那样。
https://stackoverflow.com/questions/57129330
复制相似问题