x64 visual sistemas sistema procesador para operativos operativo microsoft entre diferencia descargar c++ boost bjam boost-bjam

c++ - visual - ¿Construye bibliotecas de 32 y 64 bit para impulsar al mismo tiempo?



sistema operativo de 32 bits procesador x64 (3)

¿La opción "--address-model = 32,64" compilará tanto bibliotecas 32 como 64 o tiene que hacer dos compilaciones separadas?


La documentación dice (el énfasis es mío):

"Solicita explícitamente la generación de código de 32 bits o de 64 bits".

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 es solo para separar los dos elementos en el conjunto de valores permitidos.


Obra:

b2 address-model=32,64

O..

b2 address-model=32,64,32_64

Trabaja y produce, según el conjunto de herramientas y el soporte de la plataforma, 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 de darwin . Y por "funciona" quiero decir que lo probé con mi biblioteca de Boost en OSX con el conjunto de herramientas de darwin . Por lo tanto, sospecho que tiene su sintaxis es incorrecta, es decir, no use "--name = values" ya que no son opciones, sino que use "name = values" son las especificaciones de los requisitos.


Terminé haciendo lo siguiente:

  • Almacene las 32 compilaciones de lib / dll en una carpeta separada llamada / lib32
  • Almacene las 64 compilaciones lib / dll en una carpeta SeaPrate llamada / lib64

Ambas están preferiblemente en una ruta de búsqueda que el impulso ya está revisando, como el escenario o la carpeta de instalación .

Luego agregué este bloque justo después de ensamblar las rutas de búsqueda debajo del encabezado (el archivo FindBoost.cmake para editar está en la carpeta share / cmake-3.1 / Modules / en la carpeta de instalación de CMake)

Comience a encontrar bibliotecas de impulso

...

if (Boost_LIBRARY_DIR)

...

terminara si()

#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()

Volverá a agregar todos los directorios lib existentes a la ruta de búsqueda de impulso para bibliotecas, con el sufijo de 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.