¿Qué son ALL_BUILD y ZERO_CHECK? ¿Los necesito?

2 minutos de lectura

avatar de usuario
sashoalm

Creé un CMakeLists.txt simple:

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

Sin embargo, cuando genero un proyecto VS2012 o VS2010 desde CMake, obtengo estas 2 entradas adicionales: ALL_BUILD y ZERO_CHECK. No entiendo su propósito, ¿los necesito?

ingrese la descripción de la imagen aquí

avatar de usuario
sashoalm

De https://cmake.org/pipermail/cmake/2008-November/025448.html:

Armin Berrés — 22/11/2008, 15:12:41

ZERO_CHECK volverá a ejecutar cmake. Puede/debe ejecutar esto después de cambiar algo en sus archivos CMake.

ALL_BUILD es simplemente un objetivo que construye todo y todo el proyecto en la solución activa, supongo que uno puede compararlo con “hacer todo”.

  • ALL_BUILD no construye necesariamente todos los proyectos. Ver cmake.org/cmake/help/latest/prop_dir/EXCLUDE_FROM_ALL.html

    – Andreas Haferburg

    10 de abril de 2017 a las 12:32


  • CERO_CHEQUEO. Gran nombre; debería servir como un ejemplo estelar para cualquiera que intente nombrar nuevas tecnologías. Sigan con el buen trabajo CMake!

    – idiota_satan

    22 de marzo de 2019 a las 19:28


  • ¡Cuidado con los elogios, podrían pensar que el nombre es intuitivo jaja!

    – PrimRock

    26 de marzo de 2020 a las 18:49

  • ALL_BUILD sin embargo, no se construye a sí mismo. 😀 Puede tomarlo como un proxy que desencadena el proceso de compilación en todos los demás objetivos de la solución. Esto es bastante confuso. Lo mismo se aplica a la ZERO_CHECK. que, como se indica en la respuesta, vuelve a ejecutar CMake, por lo tanto, tampoco construye nada. No tengo idea de quién decidió presentar esta convención, pero espero que cambie en el futuro. Para alguien nuevo en CMake y la integración en Visual Studio, esto es bastante confuso.

    – rbaleksandar

    13 de agosto de 2021 a las 14:03

avatar de usuario
usuario2902980

Agregue la siguiente línea a su CMakeLists.txt para suprimir la generación de ZERO_CHECK:

set(CMAKE_SUPPRESS_REGENERATION true)

  • Genial no sabia eso. Probé CMAKE_SUPPRESS_REGENERATION:Bool=1 en CMakeCache.txt y también funciona. Gracias

    – Arnaud

    10 de marzo de 2017 a las 15:36

  • Cabe señalar que, por alguna razón, esto debe configurarse en el nivel superior CMakeLists.txtno funcionará en subdirectorios (a partir de CMake 3.10)

    – Kralyk

    7 de marzo de 2018 a las 12:01


  • ¿Hay alguna forma similar de evitar que se cree ALL_BUILD? Editar: Ok, no hay: gitlab.kitware.com/cmake/cmake/issues/16979

    – Félix Crazzolara

    3 de marzo de 2020 a las 21:49


¿Ha sido útil esta solución?