Howto find header-only libraries properly
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- cmake
- Área
- build-system
Línea de trabajo
Comienza con los ejemplos del issue de Boost::headers y find_package(Boost 1.84.0 REQUIRED headers), y después compara los metadatos de CMake para compilaciones de Boost como subproject, CMake externo y B2. Se considera terminado cuando el proyecto tenga una forma acordada y preparada para el futuro de descubrir bibliotecas header-only en los tres entornos.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I am not sure if this is the right place to ask this question, but since it's CMake related, i give it a try.
First some background, i am using CMake to build my projects, most of my projects link against an installed Boost library, only very few projects compile a private version of Boost themself during their build and link against this one. Until recently i was using only B2 builds of Boost, but now i switched to CMake builds, mostly to profit of the transitive dependency resolution to reduce compilation for projects that build Boost themself. Of course i was hit by the problem that the target Boost::headers does nothing in that case and i have to link against header-only libraries directly.
Now i'm facing the difficulty that a big library of mine has to work in both environments, Boost as subproject and an external Boost. To find the external Boost header-only libraries i use the usual find_package(Boost 1.84.0 REQUIRED headers) call, this gives me Boost::headers to link against. This target also exists when using Boost as subproject, but in that case it is not IMPORTED. My first idea was, check if that target is IMPORTED, use it in that case, otherwise link against indiviual libraries. Doesn't look nice, but would work.
Looking at the CMake metadata of a CMake Boost build i saw that there is code to actually create targets for individual header-only libraries, but for this to get actually used, i also have to search for these libraries explicit like find_package(Boost 1.84.0 REQUIRED asio smart_ptr). I like that approach but there is one problem, this does not work for a B2 build, that one does not contain targets for individual header-only libraries.
Now i wonder, what would be a future proof way to search for header-only libraries?
- Lenguaje dominante
- CMake
- Estrellas
- 119
- Forks
- 38
- Merge medio
- 10 h 51 min
- PR fusionados (30 d)
- 1
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de boostorg/cmake
-
Dificultad 3/5 1-2 días Aptitud para principiantes 72/100
-
Delete merged branchesAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
-
boost::asio doesn't seem to install with cmake on version 1.89Posiblemente ocupada @yurybura la tomó hace 447 días. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
-
issue in moveit_coreAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 15/100
-
Document BoostConfig.cmake?Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
Todos los issues de boostorg/cmake
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
area:render needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
bherbruck/solvecraft#13138 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
voidzero-dev/vite-plus#3381 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
ccch1mneyyy/dsh-Go#728 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
blinklabs-io/dingo#6057 ·
Los mantenedores suelen responder en 1 día