Was sind ALL_BUILD und ZERO_CHECK und brauche ich sie?

74

Ich habe eine einfache CMakeLists.txt erstellt:

cmake_minimum_required(VERSION 2.8)
project (HelloWorld)
add_executable (HelloWorld main.cpp)

Wenn ich jedoch ein VS2012- oder VS2010-Projekt aus CMake generiere, erhalte ich diese 2 zusätzlichen Einträge - ALL_BUILD und ZERO_CHECK. Ich verstehe ihren Zweck nicht, brauche ich sie?

Geben Sie hier die Bildbeschreibung ein

Sashoalm
quelle

Antworten:

71

Nach einigen weiteren Suchen fand ich die Antwort unter https://cmake.org/pipermail/cmake/2008-November/025448.html :

Armin Berres - 22.11.2008, 15:12:41 Uhr

ZERO_CHECK führt cmake erneut aus. Sie können / sollten dies ausführen, nachdem Sie etwas an Ihren CMake-Dateien geändert haben.

ALL_BUILD ist einfach ein Ziel, das alles und jedes Projekt in der aktiven Lösung erstellt. Ich denke, man kann es mit "alles machen" vergleichen.

Sashoalm
quelle
3
ALL_BUILD erstellt nicht unbedingt alle Projekte. Siehe cmake.org/cmake/help/latest/prop_dir/EXCLUDE_FROM_ALL.html
Andreas Haferburg
22
ZERO_CHECK. Großartige Benennung; sollte als herausragendes Beispiel für jeden dienen, der versucht, neue Technologien zu benennen. Weiter so CMake!
douche_satan
3
Sei vorsichtig mit den Empfehlungen, die sie vielleicht tatsächlich für intuitiv halten, haha!
PrimRock
27

Fügen Sie diese Zeile zu CMakeLists.txt hinzu, um die Generierung von ZERO_CHECK zu unterdrücken.

set(CMAKE_SUPPRESS_REGENERATION true)
user2902980
quelle
2
Cool, das wusste ich nicht. Ich habe CMAKE_SUPPRESS_REGENERATION: Bool = 1 in CMakeCache.txt ausprobiert und es funktioniert auch. Danke
Arnaud
1
Es sollte beachtet werden, dass dies aus irgendeinem Grund in der obersten Ebene festgelegt werden muss CMakeLists.txt, es funktioniert nicht in Unterverzeichnissen (ab CMake 3.10)
kralyk
Gibt es eine ähnliche Möglichkeit, um zu verhindern, dass ALL_BUILD erstellt wird? Bearbeiten: Ok, es gibt nicht: gitlab.kitware.com/cmake/cmake/issues/16979
Felix Crazzolara