Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CMake文件glob是邪恶的?_C++_Cmake - Fatal编程技术网

C++ CMake文件glob是邪恶的?

C++ CMake文件glob是邪恶的?,c++,cmake,C++,Cmake,根据,使用glob作为目标源是一种不好的做法。我试着制造出所描述的情况 CMakeLists.txt file(GLOB SOURCES "src/*.cpp") add_executable(main "${SOURCES}") src/main.cpp #include <iostream> int main() { return 0; } #包括 int main(){ 返回0; } 我正在运行cmake一次。之后,我创建了一个无效的cpp文件src/test.

根据,使用glob作为目标源是一种不好的做法。我试着制造出所描述的情况

CMakeLists.txt

file(GLOB SOURCES "src/*.cpp")
add_executable(main "${SOURCES}")
src/main.cpp

#include <iostream>

int main() {
    return 0;
}
#包括
int main(){
返回0;
}

我正在运行
cmake
一次。之后,我创建了一个无效的cpp文件src/test.cpp,并再次运行
cmake
,然后运行
make
。根据帖子中描述的情况,我必须编译所有内容,因为cmake不跟踪此文件。但实际上,cmake确实检测到了一个更改,编译失败。我理解错了吗?在您引用的帖子中,我使用的是cmake版本
3.17.1

,在您创建新文件后,他们不会运行cmake

它们仅运行
make
,如果缓存过期,则由
CMake
生成的Makefile的
make
规则应重新运行
CMake

但是在这种情况下,
CMake
不会检测到过时的缓存,也不会重新启动
CMake
以包含您的
test.cpp