tutorial online how espaƱol descarga c++ c cmake

c++ - online - descarga cmake



CMake no puede determinar el lenguaje del enlazador con C++ (6)

Estoy intentando ejecutar un programa cmake hello world en Windows 7 x64 con Visual Studio 2010 y Cygwin, pero parece que no funciona. Mi estructura de directorio es la siguiente:

HelloWorld -- CMakeLists.txt -- src/ -- -- CMakeLists.txt -- -- main.cpp -- build/

Hago una cd build seguido de un cmake .. , y obtengo un error que indica que

CMake Error: CMake can not determine linker language for target:helloworld CMake Error: Cannot determine link language for target "helloworld".

Sin embargo, si cambio la extensión de main.cpp a main.c tanto en mi filsystem como en src/CMakeLists.txt todo funciona como se esperaba. Este es el caso que se ejecuta tanto en el Símbolo del sistema de Visual Studio (Generador de soluciones de Visual Studio) como en el Terminal Cygwin (Generador de archivos Makefiles de Unix).

¿Alguna idea de por qué este código no funcionaría?

CMakeLists.txt

PROJECT(HelloWorld C) cmake_minimum_required(VERSION 2.8) # include the cmake modules directory set(CMAKE_MODULE_PATH ${HelloWorld_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) add_subdirectory(src)

src / CMakeLists.txt

# Include the directory itself as a path to include directories set(CMAKE_INCLUDE_CURRENT_DIR ON) # Create a variable called helloworld_SOURCES containing all .cpp files: set(HelloWorld_SOURCES main.cpp) # Create an executable file called helloworld from sources: add_executable(hello ${HelloWorld_SOURCES })

src / main.cpp

int main() { return 0; }


En mi caso, fue solo porque no había un archivo fuente en el destino. Toda mi biblioteca era una plantilla con código fuente en el encabezado. Agregar un archivo vacío .cpp resolvió el problema.



Por confuso que sea, el error también ocurre cuando un archivo cpp incluido en el proyecto no existe.

Si enumera sus archivos de origen en CMakeLists.txt y escribe un nombre de archivo erróneamente, obtendrá este error.


Por defecto, la carpeta Native JNI se llama jni . Renombrarlo a cpp solucionó el problema


También me enfrenté a un error similar al compilar mi código basado en C. cmake el problema al corregir la ruta del archivo fuente en mi archivo cmake . Verifique la ruta del archivo fuente de cada archivo fuente mencionado en su archivo cmake . Esto también podría ayudarte.


También recibí el error que mencionas:

CMake Error: CMake can not determine linker language for target:helloworld CMake Error: Cannot determine link language for target "helloworld".

En mi caso esto se debió a tener archivos C ++ con la extensión .cc .

Si CMake no puede determinar correctamente el idioma del código, puede usar lo siguiente:

set_target_properties(hello PROPERTIES LINKER_LANGUAGE CXX)

La respuesta aceptada que sugiere agregar el idioma a la declaración del project() simplemente agrega una verificación más estricta del idioma utilizado (de acuerdo con la documentación), pero no fue útil para mí:

Opcionalmente, puede especificar qué idiomas admite su proyecto. Los lenguajes de ejemplo son CXX (es decir, C ++), C, Fortran, etc. De manera predeterminada, C y CXX están habilitados. Por ejemplo, si no tiene un compilador de C ++, puede deshabilitar la comprobación al listar explícitamente los idiomas que desea admitir, p. Ej. C. Al utilizar el idioma especial "NINGUNO", se pueden deshabilitar todas las comprobaciones de cualquier idioma. Si existe una variable llamada CMAKE_PROJECT__INCLUDE_FILE, el archivo al que apunta esa variable se incluirá como último paso del comando del proyecto.