Est-il possible de configurer CLion pour comstackr des fichiers source dans un projet indépendamment?

Je suis actuellement en train de relever quelques défis du Projet Euler en C en utilisant l’EDI JetBrains CLion. Lorsque j’ai achevé ces opérations en Python et en Java (sous PyCharm et IntelliJ, respectivement), j’ai toujours pu créer un projet unique appelé “ProjectEuler” et append un nombre illimité de fichiers source que je pouvais exécuter de manière indépendante. Cependant, il semble que la même chose ne soit pas possible dans CLion. Chacun des fichiers source que j’utilise pour résoudre un problème contient une fonction main () et CMake en est mécontent chaque fois que j’essaie de comstackr (“plusieurs définitions de” main “”).

Existe-t-il un moyen de configurer CLion pour ne comstackr et exécuter qu’un seul fichier source dans un projet à la fois sans avoir à réécrire mon CMakeLists.txt ou créer un nouveau projet pour chaque problème à chaque fois?

Je suis conscient que C est compilé et n’est pas interprété comme Java ou Python, mais je pourrais même comstackr manuellement chaque fichier source. Y at-il un moyen de configurer CLion pour faire la même chose? Si c’est le cas, comment?

Vous pouvez définir plusieurs exécutables dans le fichier CMakeLists.txt pour chaque problème.

au lieu de

add_executable(projecteuler ${SOURCE_FILES}) 

vous pourriez définir

 add_executable(problem1 problem1.c) add_executable(problem2 problem2.c) 

Ensuite, vous obtenez pour chaque exécutable (problème1, problème2, etc.) une configuration d’exécution que vous pouvez exécuter indépendamment. Dans ce cas, vous n’aurez pas à réécrire à chaque fois, mais vous appendez simplement le nouveau fichier source à un nouvel exécutable.

Vous pouvez utiliser

 cmake_minimum_required(VERSION 2.8.4) add_subdirectory(src/prj1) add_subdirectory(src/prj2) 

puis dans chaque répertoire, créez un autre fichier CMakeLists.txt comme celui-ci:

 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}) 

Vous pouvez utiliser le file(GLOB SOURCE_FILES *.cpp) si vous souhaitez append automatiquement des fichiers à votre compilation. Mais gardez à l’esprit que cette “astuce” n’est pas fortement encouragée.

Cela appenda automatiquement les configurations de construction à CLion.

Vous pouvez append ces lignes à votre fichier 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}) 

Vous devrez recharger le projet cmake (Outils -> Cmake) chaque fois que vous ajoutez ou supprimez des fichiers de votre projet. De plus, le temps de construction augmentera si vous ajoutez plus de fichiers. Vous pouvez également créer plusieurs répertoires et sous-répertoires et utiliser le file(GLOB_RECURSE APP_SOURCES path/to/*.c) afin de ne créer que ces fichiers.