Uso vs2017 CMake multiplataforma C ++ uso en combate proyecto vs2017 CMake multiplataforma C ++ combate proyecto


           
           
               
               
                                
               
                                                   Para Windows programadores, C ++ en Linux programa de desarrollo será muy difícil, el que no makefile usado, su sintaxis es muy desigual y difícil, IDE vs exterior y en segundo lugar, su facilidad de uso y vs el momento, el universo un primer IDE no está cubierta. Lo que resulta en C ++ es diferente de otros lenguajes de programación, los programadores abruptamente dieron a luz a los programadores de Windows y Linux dos grupos tienen hasta CMake.
       Los estudiantes deben tener la biblioteca de código abierto muy popular para CMake muy familiarizado con, puede generar automáticamente makefile en Linux, en Windows puede generar vs sln solución, para el proyecto de plataforma cruzada a gran escala es sin duda la primera opción, pero los programadores de Linux más. Con respecto al makefile, CMake gramática es mucho más simple paquete de una semana va a empaquetar, a la cumbre de la vida. Ahora el Evangelio para el programador, Visual Studio después de 2017 ha apoyado CMake gramática, utilizando vs2017 puede escribir el programa en Windows, compilado en Linux, es muy práctico. Aunque la versión actual todavía no está maduro, y en ocasiones habrá algunos aficionados del error, pero esto no es algo que yo creo en el futuro. Realmente espero que un día, estábamos usando vs2017.
       Sin más, me pongo a combatir, desde mi código de reubicación para empezar, mi código original se vs2013 desarrollo, archivos de cabecera de la biblioteca de terceros y las bibliotecas son gestionados por las páginas de propiedades de gestión, entre programas vs interdependencia se hace referencia. Como se muestra:
 
Es de suponer que estos son muy familiarizado con los programadores de Windows, frente a la administración es a través de este tipo de proyectos. Aquí explico paso a paso cómo mover mi proyecto se ejecuta en Linux.
En primer lugar, establecer el directorio del proyecto
Habrá opción cmake> proyecto, haga clic en OK para crear una carpeta de proyecto - si ha instalado el vs2017 cuando está marcada cmake, haga clic en Nuevo.
 
cmake crea automáticamente para nosotros los siguientes documentos, CMakeLists.txt es la gestión de archivos en el archivo de configuración de la carpeta actual, porque puse una carpeta en un proyecto, por lo que su estado es equivalente vs el VSProject, si no se puede cambiar, por lo que sólo nombre, lo que sea. Cmake_test subcarpeta se genera de forma automática, no voy a poner mi directorio raíz de ese nombre, eliminarla:
 
Crear mis archivos de código fuente en el directorio raíz de src, y añadir CMakeLists.txt
 
Abra el directorio raíz CMakeList.txt, que puede ser configurado para escribir todo el proyecto:
 
cmake_minimum_required utiliza para configurar la versión mínima de cmake, si se usa por debajo del error versión mínima. proyecto para establecer el nombre de todo el proyecto, los subdirectorios add_subdirectory utilizado para gestionar, aquí sólo tenemos un subdirectorio src, añadir a la mezcla. cmake sintaxis no es sensible a mayúsculas, la gramática aquí con el fin de distinguir de otras fases se unifican en mayúsculas. El comando set se utiliza a menudo para las variables de ajuste, en sí CMake tiene una serie de variables predefinidas, es posible asignar valores a los mismos a través del conjunto, como CMAKE_MOULE_PATH que apunta a un directorio de búsqueda .cmake archivos, que se utiliza generalmente en la búsqueda de librerías de terceros anteriores, también tiene un valor predeterminado, como CMAKE_SOURCE_DIR está apuntando al directorio raíz, esto es los archivos cmake en la carpeta del directorio raíz como un directorio de archivos búsqueda biblioteca de terceros.
En segundo lugar, se añade el código fuente
La migración de código fuente subcarpetas src, presione el proyecto de nueva carpeta
 
carpeta src CMakeList.txt a los archivos de código fuente en carpetas, que cmake código es el siguiente:
 
Muy simple, cada carpeta de origen subproyecto será capaz de añadir a la mezcla. El vs .h dentro de cada proyecto, subproyectos .cpp cmake se copian en la carpeta, y crear en ella CMakeLists.txt
 
CMakeLists.txt su carpeta bajo la gestión de este proyecto se encuentra en los archivos de código fuente
 
PROYECTO es el nombre del proyecto, FILE es un comando de operación de archivo, cuya función es todos los archivos cpp almacenan dentro de las variables base_src, opción MUNDIALIZA generará una lista de archivos para todos los archivos que coinciden con la expresión de consulta, y la lista se almacena en la variable variables, si no se especifica MUNDIALIZA, que debe venir todo CPP se enumeran, y, en general, si todos estamos involucrados en el compilador CPP, están incluidos en el uso de MUNDIALIZA venir en él. ADD_LIBRARY principal función es especificar el archivo de origen para crear un archivo de enlace, y luego se agrega al proyecto de la sintaxis del comando común es el siguiente:
add_library (<nombre> [ESTÁTICA | Compartir | MÓDULO] [EXCLUDE_FROM_ALL] [Source1] [source2] [...])
Donde <nombre> representa el nombre del archivo de biblioteca, el archivo de biblioteca se crea a partir del archivo fuente que aparece en el comando. El papel de ESTÁTICO, COMPARTIDAS y el módulo se designa para generar el archivo de biblioteca de tipos. biblioteca estática es un fichero de archivo del archivo de destino, utilice los enlaces a otro tiempo objetivo. biblioteca compartida está vinculada de forma dinámica (Librería de Enlace dinámico), que se cargará en tiempo de ejecución. MÓDULO es una biblioteca no estará vinculado a otros objetos en el plug-in, pero puede utilizar la serie dlopen- de función en tiempo de ejecución. Por defecto, la biblioteca estará en la ubicación del árbol de directorio de archivo de origen para construir el árbol de directorios se crea, será invocado aquí el comando.
ADD_LIBRARY ($ {} PROJECT_NAME COMPARTIDA $ {} base_src)
Aquí es $ {} PROJECT_NAME es el nombre del proyecto, que es la base, donde $ se utiliza generalmente para referirse a variables, toques esta sintaxis y frente a la misma. base_src es la lista de los archivos de origen sólo a causa de mis proyectos son librerías de enlace dinámico, por lo que aquí con la compartida.
INCLUDE_DIRECTORIES utilizados para búsqueda en el directorio conjunto de archivos de cabecera, que es como vs función de directorio de VC ++, casi todos los proyectos tiene una sentencia de este tipo.
Es de destacar que, por lo general creada en las ventanas cuando la librería de enlace dinámico, ajustado a la exportación debe firmar una clase o función, y Liunx no tenemos que hacer esto, por lo general se puede controlar por la macro, en contra de ingeniería, por defecto predefinidos compilar macros _WINDOWS, esto se puede tomar el control de la plataforma windows y Linux.
 
CMakeLists.txt en ADD_DEFINITIONS (-DBASE_EXPORTS) es BASE_EXPORTS conjunto esta macro en la plataforma Windows a los símbolos de exportación y ajustes.
En tercer lugar, la configuración de terceros bibliotecas
Estamos haciendo el proyecto por lo general utilizan una gran cantidad de librerías de código abierto, frente a la práctica común es escribir el archivo de proyecto, cmake, archivo CMakeLists.txt también, será escrito, sino que también tiene un motor más potente función de búsqueda, usted no tiene que especificar la ruta absoluta a las bibliotecas de terceros. Yo sólo funciona registrarse para poder utilizar las bibliotecas de terceros Log4cpp, voy a demostrar cómo configurarlo. CMakeLists.txt nueva carpeta en el archivo de registro subproyecto, sus contenidos son:
 
TARGET_LINK_LIBRARIES de comandos en este proyecto depende de la configuración de otras obras, aquí establecer su proyecto dependencia de base, lo que equivale a VS en los trabajos citados, CMake genera un conjunto dependiente de secuencia de acuerdo con el proyecto entre los proyectos.
FIND_PACKAGE se utiliza para encontrar las bibliotecas de terceros, se buscará primero Find.cmake en la ruta del módulo, esto es encontrar FindLog4cpp.cmake, ruta del módulo se especifica que CMAKE_MOULE_PATH.
 
.cmake archivo está comunicado cmake escrito en realidad, no se puede utilizar, escribió en los años CMakeLists.txt, pero lo escribió no sería más limpia y clara. Por lo general, los archivos más populares bibliotecas de terceros Find.cmake no tienen a la mano, siempre se puede encontrar en línea. Voy a todos mis bibliotecas de terceros uso podría Find.cmake se ponen aquí.
SI (Log4cpp_FOUND)
    INCLUDE_DIRECTORIES ($ {Log4cpp_INCLUDE_DIR})
    TARGET_LINK_LIBRARIES ($ {PROJECT_NAME} $ {Log4cpp_LIBRARY})
ELSE ()
    MENSAJE (el estado "CAN NOT la log4cpp encontrar la biblioteca")
si se encuentra Log4cpp, la Log4cpp_FOUND se le asignará a la verdadera, lo que realmente es FindLog4cpp.cmake dentro de una variable, que se añadió al mismo tiempo ruta de búsqueda Log4cpp_INCLUDE_DIR, Log4cpp_LIBRARY como dependencias. Talia necesita configurarse externamente. Si no puede encontrar una salida de mensaje un error, también se utiliza a menudo para imprimir información de depuración, en definitiva, es muy útil. Abrir FindLog4cpp.cmake echar un vistazo:
 
Se puede ver el interior con el exterior de la sintaxis es exactamente el mismo.
En cuarto lugar, en VS2017 proyecto de compilación CMake
CMake utiliza todos sabemos, cuando se genera sln con cmake en las ventanas, se establece en un directorio de terceros, es decir, al tercer trimestre de Log4cpp_INCLUDE_DIR tales como la asignación de variables, la asignación se realiza correctamente, puede generar diferentes versiones vs el directorio del proyecto el archivo sln y, a continuación, compilarlo.
 
En el vs2017 ha apoyado directamente CMakeLists.txt abierta, a continuación, un directorio de terceros en los que establecer, sln donde generan de la misma. Haga clic derecho en el directorio raíz CMakeLists.txt seleccione "Configurar cmake", a continuación, en el directorio raíz generará archivo CMakeSettings.json, CMakeLists.txt utiliza en la configuración puede ser escrito aquí.
 
Lo cual, BuildRoot es un directorio de construcción del GLC. las variables CRealice se utiliza para las variables utilizadas en la asignación. Aquí he recopilado los resultados de las bibliotecas de terceros están colocados en la carpeta THIRD_PARTY directorio raíz, que con nuestra práctica habitual no es diferente.
 
Después de las variables se han establecido correctamente, proyectos CRealice pueden ser compilados en vs2017 éxito. Al igual que otros proyectos de depuración y no CMake no hace ninguna diferencia.
V. compilación en Linux
Cuando estamos de alguna manera en el código de Windows, dejando sólo compilado en Linux solamente. gestión de Linux de bibliotecas de terceros más potentes que la de Windows, bibliotecas populares entrar sudo apt-get install puede ser instalado. No puedo encontrar no importa, sólo tiene que descargar directamente después de compilar bien, a diferencia de las ventanas, pero también generan sln para compilar. También a Log4cpp por ejemplo, después de descargar los buenos de los github, escriba el siguiente comando:
cd log4cpp
mkdir build
cmake ..
hacer
make install
Log4cpp instalado en el
 
Compilar los resultados se colocan generalmente en / user / incluir, bajo / user / / usuario local como las carpetas, a fin de utilizar FindCMake se encuentra directamente. Después de descargar las bibliotecas de terceros todo bien, en la carpeta de directorio raíz, escriba un comando similar a:
cd log4cpp
mkdir build
cmake ..
hacer
Hecho
----------------
responsabilidad: Este artículo es RDCC blogger "hombre de aire amor" del artículo original, siga el CC 4.0 BY-SA acuerdo de derecho de autor, que se reproduce, por favor incluya el enlace de fuente original y esta declaración.
fuente original: https: //blog.csdn.net/qingcaichongchong/article/details/86493146

Supongo que te gusta

Origin www.cnblogs.com/lvdongjie/p/12513838.html
Recomendado
Clasificación