¿La opción "--address-model = 32,64" compilará bibliotecas de 32 y 64 o tiene que hacer dos compilaciones separadas?¿Construye bibliotecas de 32 y 64 bits para impulsar al mismo tiempo?
Respuesta
Haciendo:
b2 address-model=32,64
O ..
b2 address-model=32,64,32_64
trabajo y produce, en función de conjunto de herramientas y soporte de la plataforma, tanto objetivos de 32 y 64 bits en el primer caso. Y 32, 64 y 32 + 64 objetivos universales (muy probablemente solo en OSX usando el conjunto de herramientas darwin
. Y por "funciona" quiero decir que lo probé con mi biblioteca de Boost en OSX con el conjunto de herramientas darwin
. Por lo tanto, sospecho que tiene la sintaxis incorrecta, es decir, no utiliza las "--name = valores" ya que no son opciones, pero en lugar de utilizar "name = valores" son los son especificaciones de requisitos
¡Gracias por la aclaración de la sintaxis! Tal vez estoy siendo exigente, pero ¿no debería b2 estar dando un error (advertencia como mínimo) cuando la sintaxis es incorrecta? Supongo que la moraleja de la historia es tener cuidado con b2 !! – PopcornKing
No es realmente fácil, a partir del punto de vista de la implementación de b2, que la sintaxis sea incorrecta. Ve una opción sintaxis correcta (cualquier cosa que comience con "-", que no reconoce, que se pasa a los Jamfiles. Todos observan la opción, de forma modular, y deciden que no la manejan. no hay lugar donde pueda decidir que la opción no es válida. Es decir, acaba siendo ignorado. Lo cual es un efecto de que la CLI b2 no sea un conjunto de sintaxis cerrado. – GrafikRobot
Creo que tendrá un problema con esto cuando viene a sacar las bibliotecas porque desafortunadamente las bibliotecas de 32 bits y 64 bits tienen nombres idénticos. Necesita ejecutar b2 dos veces. Una vez con, por ejemplo, "--stagedir = etapa32 modelo de dirección = 32" y una vez con " --stagedir = stage64 address-model = 64 ". – mheyman
Los estados de documentación (énfasis mío):
"explícitamente Solicitar ya sea 32 bits o 64 bits generación de código."
Tenga en cuenta que no dice "uno o más de" o "al menos uno de", dice que ... o bien, lo que implica XOR en mi lectura y su experiencia coincide con eso.
La coma en la lista de valores permitidos consiste simplemente en separar los dos elementos en el conjunto de valores permitidos.
La documentación también dice: "La coma tiene un significado especial solo si la característica tiene un conjunto de valores fijo, entonces bjam include = estático, compartido no se trata especialmente. " 32 y 64 me parecen correctos para el modelo de dirección. Gracias por responder. – PopcornKing
@PopcornKing - Creo que el comentario "o bien ... o bien" en el indicador específico reemplaza cualquier comentario general que aplique – Flexo
que terminé haciendo lo siguiente:.
- tienda el 32 lib/DLL se basa en una carpeta separada llamada/lib32
- tienda el 64 lib/DLL se basa en una carpeta llamada seaprate/lib64
Ambos son preferiblemente en una ruta de búsqueda que aumentan ya está comprobando, como etapa o en la carpeta de instalación .
Luego añade este bloque justo después de las rutas de búsqueda se montan debajo de la cabecera (el archivo FindBoost.cmake editar está en la carpeta share/cmake-3.1/Módulos/ en la carpeta de instalación CMake)
empezar a encontrar a impulsar las bibliotecas
...
si (Boost_LIBRAR Y_DIR)
...
endif()
#generate 32 and 64 bit paths
if(WIN32)
if(CMAKE_CL_64)
#message("Finding BOOST on windows platform (64 bit)")
SET(BOOST_libdir_suffix_gen "64")
else()
#message("Finding BOOST on windows platform (32 bit)")
SET(BOOST_libdir_suffix_gen "32")
endif()
list(APPEND _boost_LIBRARY_SEARCH_DIRS_PLATFORMS "")
foreach(SEARCH_DIR_NOPLATFORM ${_boost_LIBRARY_SEARCH_DIRS})
list(APPEND _boost_LIBRARY_SEARCH_DIRS_PLATFORMS ${SEARCH_DIR_NOPLATFORM}${BOOST_libdir_suffix_gen})
endforeach()
foreach(SEARCH_DIR_PLATFORM ${_boost_LIBRARY_SEARCH_DIRS_PLATFORMS})
list (APPEND _boost_LIBRARY_SEARCH_DIRS ${SEARCH_DIR_PLATFORM})
endforeach()
else()
# no generation required (?)
endif()
Se volverá a anexar todos los directorios lib existentes a la ruta de búsqueda de impulso para las bibliotecas, con el sufijo una etiqueta de extensión de 64 o 32 bits. Esto selecciona las librerías de destino correctas para vincular, y puede regenerar de forma segura cualquier otra biblioteca de cmake dependiente (como CGAL) para una compilación de destino de 32 o 64 sin restablecer la ruta de dependencia de impulso.
- 1. Objeto compartido/bibliotecas mixtas de 32 bits y 64 bits
- 2. Mezcla de 32 bits y 64 bits P/Invoca
- 3. ¿Construye 32 bits en Linux de 64 bits utilizando un script configure de automake?
- 4. ¿Despliega versiones de 64 bits y 32 bits de una aplicación en el mismo binario?
- 5. Windows 7 64 bits incorrecta PATH al cargar la biblioteca de 32 bits para 32 bits exe
- 6. 64 bits por división de 32 bits
- 7. MapViewOfFile compartido entre procesos de 32 bits y 64 bits
- 8. Crear archivo para compilaciones de 32 y 64 bits
- 9. ¿Cómo funcionan las bibliotecas compartidas en un sistema mixto de 64 bits/32 bits?
- 10. Siempre es de 64 bits en las máquinas de 32 y 64 bits
- 11. Determinación de Windows de 64 bits frente a 32 bits
- 12. ¿Cómo compila aplicaciones de 32 bits y de 64 bits al mismo tiempo en Visual Studio para C/C++ en un archivo MAKE?
- 13. Registros de 64 bits en ventanas de 32 bits
- 14. ¿Cómo fuerzo Python para ser de 32 bits en Snow Leopard y otras preguntas de 32 bits/64 bits
- 15. MinGW GCC: compilador cruzado simple de 32 y 64 bits.
- 16. Ejecute AnyCPU como 32 bits en sistemas de 64 bits
- 17. Utilice un instalador de NSIS para instalar binarios de 32 bits en sistemas operativos de 32 bits y binarios de 64 bits en sistemas operativos de 64 bits.
- 18. Interoperabilidad de 32 y 64 bits en Windows de 64 bits
- 19. Cómo enlazar últimas libs de 32 bits/64 bits en tiempo de ejecución
- 20. ¿Aplicación de 32 bits o de 64 bits en el sistema operativo de 64 bits?
- 21. Compilación de 32 bits con llvm-gcc de 64 bits
- 22. Crear un contenedor administrado para DLL no administrado de 32 bits y 64 bits
- 23. Puerto 32 bits Controlador de Windows a 64 bits Windows
- 24. Granularidad de fecha y hora entre Windows de 32 bits y 64 bits
- 25. Compatibilidad con Java de 32 bits frente a 64 bits
- 26. conversión de aplicación .NET 32 bits a 64 bits
- 27. Agregar números de 64 bits con aritmética de 32 bits
- 28. Instalar controladores de 32 y 64 bits con Wix?
- 29. ¿iPhone OS es de 64 bits o 32 bits?
- 30. ¿Hay diferencia para Integer.MAX_VALUE entre JVM de 32 bits y JVM de 64 bits?
** Para aquellos de ustedes compilando para i386 Mac OS ** y tropezaron aquí, y no funcionó, entonces estaban a punto de suicidarse (como yo), agreguen esta bandera también: 'architecture = x86' – Mazyod
Tengo una pregunta similar. Puedo construir boost 32 y 64 bit (la sugerencia 32_64 en la respuesta a continuación NO funciona en Windows con la versión 1.57.0) y almacenarlos en diferentes directorios lib, pero al hacer referencia a esas librerías, ¿cuál es el mejor enfoque sugerido para organizar ¿ellos? Quiero poder construir proyectos de 32 bits y 64 sin tener que cambiar entre variables de entorno (por ejemplo, al usar cmake) – StarShine