Usar un archivo MAKE local para CLion en lugar de CMake

148

¿Hay alguna manera de configurar CLion para usar un archivo MAKE local para compilar código, en lugar de CMake? Parece que no puedo encontrar la manera de hacerlo desde las opciones de compilación.

hlin117
fuente

Respuestas:

142

Actualización: si está utilizando CLion 2020.2, entonces ya es compatible con Makefiles. Si está utilizando una versión anterior, siga leyendo.


Aunque actualmente solo se admite CMake, puede indicar a CMake que llame makecon su costumbre Makefile. Edite su CMakeLists.txtadición de uno de estos dos comandos:

Cuando le indique CLionque ejecute su programa, intentará encontrar un ejecutable con el mismo nombre del destino en el directorio señalado por PROJECT_BINARY_DIR. Por lo tanto, siempre que makegenere el archivo donde CLionespera, no habrá ningún problema.

Aquí hay un ejemplo de trabajo:

Indique CLionque pase su $ (PROJECT_BINARY_DIR) amake

Esta es la muestra CMakeLists.txt:

cmake_minimum_required(VERSION 2.8.4)
project(mytest)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

add_custom_target(mytest COMMAND make -C ${mytest_SOURCE_DIR}
                         CLION_EXE_DIR=${PROJECT_BINARY_DIR})

Dile a make que genere el ejecutable en el CLion'sdirectorio

Esta es la muestra Makefile:

all:
    echo Compiling $(CLION_EXE_DIR)/$@ ...
    g++ mytest.cpp -o $(CLION_EXE_DIR)/mytest

Eso es todo, es posible que también desee cambiar el directorio de trabajo de su programa para que se ejecute tal como está cuando ejecuta make desde su directorio. Para esta edición:Run -> Edit Configurations ... -> mytest -> Working directory

Daniel
fuente
Todavía no he probado su sugerencia anterior, pero ¿podría ejecutar mis programas C / C ++ dentro de CLion si lo hiciera? (Esto facilitaría
muchísimo
3
Verifiqué que la solución de @ Mondkin funciona. Si tiene problemas para construir el proyecto después de modificar Makefiley CMakeLists.txt, intente modificar un *.cpparchivo. Esto haría que CLion construyera todo desde cero.
hlin117
Esto funciona, pero cuando intenté agregar "make clean" a la configuración falla.
71GA
1
FYI Para que esto funcione, al menos en algunos proyectos, (por ejemplo, redis), debe agregar un 'TODO', haciendo que: add_custom_target (mytest ALL COMMAND make -C $ {mytest_SOURCE_DIR} CLION_EXE_DIR = $ {PROJECT_BINARY_DIR} )
Decker
1
¿Qué debo cambiar para que funcione con gcc para C?
Romain-p
33

Si bien esta es una de las solicitudes de funciones más votadas , hay un complemento disponible, de Victor Kropp , que agrega soporte a los archivos MAKE:

Complemento de soporte de Makefile para IntelliJ IDEA

Instalar en pc

Puede instalar directamente desde el repositorio oficial:

Configuración> Complementos> buscar makefile> Buscar en repositorios> Instalar> Reiniciar

Utilizar

Hay al menos tres formas diferentes de ejecutar:

  1. Haga clic derecho en un archivo MAKE y seleccione Ejecutar
  2. Haga que el archivo MAKE se abra en el editor, coloque el cursor sobre un objetivo (en cualquier lugar de la línea), presione alt+ enter, luego seleccione hacer objetivo
  3. Hit ctrl/ cmd+ shift+ F10en un objetivo (aunque este no funcionó para mí en una Mac).

Abre un panel llamado Ejecutar objetivo con la salida.

iled
fuente
2
Solo un aviso, si sigues esta ruta, asegúrate de ir a settings-> make y asegúrate de apuntar el complemento al directorio de instalación de make. Por defecto se ve en / usr / bin / make
Taylor Liss
55
Probé tu método, pero esto solo da la oportunidad de construir tu proyecto, ¿verdad? No puedo ejecutar una aplicación que se creó con make con este complemento, ¿o me pierdo algo? Tengo un proyecto que tiene un bastante complejo Makefile y no quiero escribir un archivo CMake para ella, pero me gustaría depurarlo usando CLION ...
blacktemplar
@blacktemplar No sé si puede usar todas las herramientas de depuración de CLion, pero debería poder compilar y depurar un archivo binario creado con el método anterior. Solo jugué un poco con él y pude usar los botones de control de pasos, por ejemplo.
iled
2
Para configuraciones más complejas, esto es mucho más fácil que la respuesta aceptada. ¡Editar el archivo MAKE solo para ejecutar ese archivo MAKE es una locura!
Kevin
1
¿Cómo ejecutó el binario generado en clion? Creo una nueva configuración para la Aplicación, luego objetivo: Todos los objetivos, Ejecutable: nombre del binario, pero obtengo este error: "No se puede ejecutar binaryen <predeterminado>"
Kennet Celeste
7

La versión más nueva tiene un mejor soporte literal para cualquier Makefiles generado, a través de compiledb

Tres pasos:

  1. instalar compiledb

    pip install compiledb
    
  2. ejecutar una marca en seco

    compiledb -n make 
    

    (hacer el autogen, configurar si es necesario)

  3. se generará un archivo compile_commands.json para abrir el proyecto y verá que CLion cargará información del archivo json. Si su CLion todavía intenta encontrar CMakeLists.txt y no puede leer compile_commands.json, intente eliminar toda la carpeta, volver a descargar los archivos de origen y rehacer el paso 1,2,3

Publicación original: Trabajar con Makefiles en CLion usando Compilation DB

Fengggli
fuente
1
Agradable el Jetbrains está resolviendo el problema, pero a partir del 16 de noviembre de 2018 no es útil porque no puede depurar el ejecutable generado.
gerardw
3

Para evitar totalmente el uso de CMAKE, puede simplemente:

  1. Construye tu proyecto como lo haces normalmente con Make a través de la terminal.

  2. Cambie sus configuraciones de CLion, vaya a (en la barra superior):
    Run -> Edit Configurations -> yourProjectFolder

  3. Cambie el Executableal generado con Make

  4. Cambie Working directorya la carpeta que contiene su ejecutable (si es necesario)

  5. Eliminar la Buildtarea en el Before launch:Activate tool windowcuadro

¡Y ya está todo listo! Ahora puede usar el botón de depuración después de su compilación manual.

13013SwagR
fuente
1
Mi configuración tal como la describió dice "Nada sobre lo que construir" aunque el ejecutable esté configurado y exista.
burro
Eso es correcto. Debe compilar manualmente y luego ejecutar (sin compilar). Tenga en cuenta que la versión más nueva de CLion parece ser mejor compatible con MakeFiles. Esta solución aún funciona, pero la consideraría obsoleta
13013SwagR
¿Qué sugerirías para la última versión? Tengo el complemento makefile pero no maneja la compilación / depuración.
burro
Debería poder compilar y supongo que depurar también con el complemento Makefile. Ver el Clion Doc. . Sin embargo, le sugiero que use CMake, que es totalmente compatible y evita todos los problemas. También podría configurarlo (creo) con la plantilla de depuración remota o usar GDB directamente en la consola.
13013SwagR
1

Actualmente, solo CMake es compatible con CLion. Otros sistemas de compilación se agregarán en el futuro, pero actualmente, solo puede usar CMake.

Se implementó una herramienta de importación para ayudarlo a usar CMake.

Editar:

Fuente: http://blog.jetbrains.com/clion/2014/09/clion-answers-frequently-asked-questions/

GauthierPLM
fuente
Al ver que esta publicación ha estado fuera durante un mes, y esta es la única respuesta, estoy convencido de que tienes razón, desafortunadamente ...
hlin117
Profundizando en la fuente del comentario, encontré esto: youtrack.jetbrains.com/issue/CPP-494#tab=Comments
hlin117
¿Qué pasa si no quieres usar cmake?
Enerccio
1

No estoy muy familiarizado con CMake y no pude usar la solución de Mondkin directamente.

Esto es lo que se me ocurrió en mi CMakeLists.txt usando la última versión de CLion (1.2.4) y MinGW en Windows (supongo que solo tendrá que reemplazar todo: g ++ mytest.cpp -o bin / mytest por make if no estás usando la misma configuración):

cmake_minimum_required(VERSION 3.3)
project(mytest)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

add_custom_target(mytest ALL COMMAND mingw32-make WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})

Y el Makefile personalizado es así (se encuentra en la raíz de mi proyecto y genera el ejecutable en un directorio bin):

all:
    g++ mytest.cpp -o bin/mytest

Puedo construir el ejecutable y se puede hacer clic en los errores en la ventana de registro.

Las sugerencias en el IDE son bastante limitadas, lo que es una gran limitación en comparación con los proyectos puros de CMake ...

Jérémy
fuente
Esto funcionó para mí. Pude hacer que CLion reconociera mis archivos de origen como "activos" al incluirlos todos en mi set(SOURCE_FILES all_files_here.c)y luego agregarlos add_executable(foobar_cmake ${SOURCE_FILES})además del destino personalizado. Luego, solo asegúrese de que CLion esté configurado para construir / ejecutar su objetivo personalizado y no el _cmake.
Kevin Mark