Digamos que desea compilar los ejemplos de "Inicio" de Boost y vincularlos usando un proyecto de Xcode en lugar de compilar en la línea de comando. Intenta la opción de solo encabezado y funciona bien.¿Cómo construyo los ejemplos de "Cómo empezar" usando XCode?
Pero entonces se toma el origen de ejemplo:
#include <boost/regex.hpp>
#include <iostream>
#include <string>
int main()
{
std::string line;
boost::regex pat("^Subject: (Re: |Aw:)*(.*)");
while (std::cin)
{
std::getline(std::cin, line);
boost::smatch matches;
if (boost::regex_match(line, matches, pat))
std::cout << matches[2] << std::endl;
}
}
Y hace lo siguiente:
- construir las bibliotecas de impulsar el uso de ./bjam instalación
- Abra Xcode y crear un nuevo C++ proyecto de utilidad de línea de comando.
- Arrastre libboost_regex.dylib en la carpeta de productos de los grupos & Archivos vista de árbol (marcando la opción que le permite copiar el archivo)
- Establecer las opciones del proyecto de manera que Header Rutas de búsqueda apunta a la carpeta Boost incluyen
- Construir ¡y ejecuta el proyecto!
Lamentablemente, si usted tiene la consola abierta (Ejecutar | Consola) que va a ver un error que no puede encontrar el dylib:
dyld: Library not loaded: libboost_regex.dylib
Referenced from: /Users/matt/Documents/Boost/test/GettingStarted/build/Debug/GettingStarted
Reason: image not found
Así, sin saber una manera mejor para hacer que Xcode haga esto, copie el dylib en su_proyecto/compilación/depuración/¡y se ejecuta! ¡Hurra!
persona orientado a los detalles que son, escribe algunas cosas en la norma en probarlo:
> Subject: foo bar baz
> foo bar baz
Y entonces segfaults.
Program received signal: “EXC_BAD_ACCESS”.
ACK!
Pero no tengas miedo. ¡Yo sé cuál es el problema! Y si nadie me gana, publicaré la solución después del almuerzo.
Supongo que si la copia no está sucediendo, puede estar enlazando con una versión diferente (sin depuración) de la biblioteca, lo que explicaría por qué agregar el paso de copia lo corrige. –