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

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.


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)

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.