txt online not how found descarga cmakelists c++ cmake

c++ - online - CMake: cuándo usar add_definitions en lugar de set_target_properties(definiciones PROPIEDADES COMPILE_DEFINITIONS de destino)



descarga cmake (3)

No digo que algo deba ser usado.

Es sólo una cuestión de su hábito.

Algunas recomendaciones:

  • Use add_definitions cuando desee agregar a la línea de comando del compilador las fuentes en el directorio actual y más abajo. Es más corto de escribir.

  • Utilice COMPILE_DEFINITIONS para un ajuste fino de las fuentes objetivo o específicas.

En la documentación de CMake, podemos leer:

add_definitions

Agrega indicadores a la línea de comando del compilador para las fuentes en el directorio actual y más abajo.

Propiedad COMPILE_DEFINITIONS en directorios

COMPILE_DEFINITIONS: definiciones de preprocesador para compilar las fuentes de un directorio.

Propiedad COMPILE_DEFINITIONS en objetivos

COMPILE_DEFINITIONS: definiciones de preprocesador para compilar las fuentes de un objetivo.

Propiedad COMPILE_DEFINITIONS en los archivos fuente

COMPILE_DEFINITIONS: definiciones de preprocesador para compilar un archivo fuente.

COMPILE_DEFINITIONS funcionalidad COMPILE_DEFINITIONS y add_definitions parece superponerse. COMPILE_DEFINITIONS propiedad COMPILE_DEFINITIONS parece más flexible.

Así que parece que la propiedad COMPILE_DEFINITIONS hace todo lo que hace add_definitions, e incluso más.

Entonces, ¿en qué casos debemos llamar a add_definitions porque la propiedad COMPILE_DEFINITIONS no se puede usar?


Si desea agregar una compile definition for target , puede usar esta función target_compile_definitions que es más conveniente, como agregar varias compile definitions una vez, como:

add_executable (trie_io_test demo12.cpp) target_compile_definitions(trie_io_test PRIVATE UNIT_TESTING=1 IO_TEST=1)

Puede ver esta pregunta sobre cómo configurar varias definiciones de compilación para el ejecutable de destino para obtener más información también en este https://cmake.org/cmake/help/v3.0/command/target_compile_definitions.html .


add_definitions ha existido en CMake desde que la primera versión de CMake se puso en línea hace más de una década.

COMPILE_DEFINITIONS es simplemente la forma más nueva, más flexible y precisa de hacerlo.

Siempre estarán disponibles: ya que el 99% o más de los archivos CMakeLists existentes en el mundo usan add_definitions, simplemente no sería prudente eliminarlo. Los desarrolladores de CMake trabajan muy duro para mantener la compatibilidad con versiones anteriores ... a veces en detrimento de la claridad y la simplicidad. Y a veces haciendo esencialmente lo mismo de múltiples maneras diferentes.

Entonces: add_definitions es principalmente útil para configurar archivos CMakeLists preexistentes, para aquellos proyectos que han existido desde antes de la introducción de COMPILE_DEFINITIONS. Y, dado que esos proyectos lo usan, cualquier proyecto más nuevo que se base en lo que las personas aprenden al leer esos archivos de CMakeLists también es probable que use add_definitions.

Pero si usar COMPILE_DEFINITIONS solo es suficiente para sus necesidades, ciertamente no hay nada de malo en eso.