instalar - ¿Es posible configurar CLion para compilar archivos de origen en un proyecto de forma independiente?
g++ download (3)
Puede agregar estas líneas a su CMakeLists.txt.
#GLOB_RECURSE will find files in all subdirectories that match the globbing expressions and store it into the variable.
file(GLOB_RECURSE APP_SOURCES *.c)
foreach (testsourcefile ${APP_SOURCES})
#get filename without extension
get_filename_component(testname ${testsourcefile} NAME_WE)
#add executable for all file
add_executable(${testname} ${testsourcefile})
endforeach (testsourcefile ${APP_SOURCES})
Deberá volver a cargar el proyecto cmake (Herramientas -> Cmake) cada vez que agregue o elimine archivos de su proyecto. También aumentará el tiempo de compilación si agrega más cantidad de archivos. Alternativamente, puede crear más directorios y subdirectorios y usar el file(GLOB_RECURSE APP_SOURCES path/to/*.c)
para que solo compile esos archivos.
Actualmente estoy haciendo algunos desafíos del Proyecto Euler en C usando el CLE IDE de JetBrains. Cuando completé estos en Python y Java (en PyCharm e IntelliJ, respectivamente), siempre pude crear un solo proyecto llamado "ProjectEuler" y agregar cualquier número de archivos de origen que pudiera ejecutar de forma independiente. Sin embargo, parece que lo mismo no es posible en CLion. Cada uno de los archivos de origen que utilizo para resolver un problema contiene una función main (), y CMake no está contento con eso cada vez que intento compilar ("definición múltiple de ''main''").
¿Hay alguna forma de configurar CLion para que solo compile y ejecute un solo archivo de origen en un proyecto a la vez sin tener que volver a escribir mi CMakeLists.txt o crear un nuevo proyecto para cada problema cada vez?
Soy consciente de que C se compila y no se interpreta como Java o Python, pero posiblemente podría compilar cada archivo fuente manualmente. ¿Hay una manera de configurar CLion para hacer lo mismo? ¿Si es así, cómo?
Puede definir varios ejecutables en el CMakeLists.txt para cada problema.
en lugar de
add_executable(projecteuler ${SOURCE_FILES})
podrias definir
add_executable(problem1 problem1.c)
add_executable(problem2 problem2.c)
Luego, obtiene para cada ejecutable (problema 1, problema 2, etc.) una configuración de ejecución, que puede ejecutar de forma independiente. En este caso, no tendrá que volver a escribir cada vez, en lugar de eso, simplemente agregue el nuevo archivo de origen a un nuevo ejecutable.
Puedes usar
cmake_minimum_required(VERSION 2.8.4)
add_subdirectory(src/prj1)
add_subdirectory(src/prj2)
luego, en cada directorio, cree otro CMakeLists.txt como este:
cmake_minimum_required(VERSION 2.8.4)
project(prj1)
set(EXEC_NAME prj1)
set(SOURCE_FILES
main_prj1.cpp
x.cpp
y.cpp
)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(EXECUTABLE_OUTPUT_PATH ../../dist/${CMAKE_BUILD_TYPE})
add_executable(${EXEC_NAME} ${SOURCE_FILES})
Puede usar el file(GLOB SOURCE_FILES *.cpp)
si desea agregar automáticamente archivos en su compilación. Pero tenga en cuenta que este "truco" no se recomienda mucho.
Esto también agregará automáticamente las configuraciones de compilación a CLion.