2017-10-06 3 views
0

ich die Cilk und Anmerkungen in meinem C++ Programm, so etwas wie verwenden müssen:Cilk und Annotation mit JetBrains Clion IDE (C++)

#inlcude <cilk/cilk.h> 

cilk_spawn myFunction(); 
cilk_sync; 

Ich verwende JetBrains CLION IDE und ich erhalte die Fehler Fehler nach Makrosubstitution: Typ '_Cilk_spawn' kann nicht aufgelöst werden. Ich frage mich, ob es eine Lösung gibt. Natürlich, mit g ++ direkt von meinem Terminal, ich füge einfach die Option-fcilkplus, aber in diesem Fall weiß ich nicht, wie Sie dieses Problem lösen. Hier ist der Inhalt meiner CMakeLists.txt Datei (aktualisiert):

cmake_minimum_required(VERSION 3.8) 
project(C__Threads) 

set(CMAKE_CXX_STANDARD 11) 
set(SOURCE_FILES main.cpp) 
set(CMAKE_CXX_FLAGS "-fcilkplus") // I've also put this one because otherwise the building process fails. 

add_executable(C__Threads ${SOURCE_FILES}) 
target_compile_options(C__Threads PUBLIC -fcilkplus) 
set(CMAKE_VERBOSE_MAKEFILE ON) 

Und dies ist der Build-Ausgabe (aktualisiert):

/home/leo/clion-2017.2.3/bin/cmake/bin/cmake --build /home/leo/CLionProjects/C++Threads/cmake-build-debug --target C__Threads -- -j 4 
/home/leo/clion-2017.2.3/bin/cmake/bin/cmake -H/home/leo/CLionProjects/C++Threads -B/home/leo/CLionProjects/C++Threads/cmake-build-debug --check-build-system CMakeFiles/Makefile.cmake 0 
/usr/bin/make -f CMakeFiles/Makefile2 C__Threads 
make[1]: Entering directory '/home/leo/CLionProjects/C++Threads/cmake-build-debug' 
/home/leo/clion-2017.2.3/bin/cmake/bin/cmake -H/home/leo/CLionProjects/C++Threads -B/home/leo/CLionProjects/C++Threads/cmake-build-debug --check-build-system CMakeFiles/Makefile.cmake 0 
/home/leo/clion-2017.2.3/bin/cmake/bin/cmake -E cmake_progress_start /home/leo/CLionProjects/C++Threads/cmake-build-debug/CMakeFiles 2 
/usr/bin/make -f CMakeFiles/Makefile2 CMakeFiles/C__Threads.dir/all 
make[2]: Entering directory '/home/leo/CLionProjects/C++Threads/cmake-build-debug' 
/usr/bin/make -f CMakeFiles/C__Threads.dir/build.make CMakeFiles/C__Threads.dir/depend 
make[3]: Entering directory '/home/leo/CLionProjects/C++Threads/cmake-build-debug' 
cd /home/leo/CLionProjects/C++Threads/cmake-build-debug && /home/leo/clion-2017.2.3/bin/cmake/bin/cmake -E cmake_depends "Unix Makefiles" /home/leo/CLionProjects/C++Threads /home/leo/CLionProjects/C++Threads /home/leo/CLionProjects/C++Threads/cmake-build-debug /home/leo/CLionProjects/C++Threads/cmake-build-debug /home/leo/CLionProjects/C++Threads/cmake-build-debug/CMakeFiles/C__Threads.dir/DependInfo.cmake --color= 
make[3]: Leaving directory '/home/leo/CLionProjects/C++Threads/cmake-build-debug' 
/usr/bin/make -f CMakeFiles/C__Threads.dir/build.make CMakeFiles/C__Threads.dir/build 
make[3]: Entering directory '/home/leo/CLionProjects/C++Threads/cmake-build-debug' 
[ 50%] Building CXX object CMakeFiles/C__Threads.dir/main.cpp.o 
/usr/bin/c++ -fcilkplus -g -fcilkplus -std=gnu++11 -o CMakeFiles/C__Threads.dir/main.cpp.o -c /home/leo/CLionProjects/C++Threads/main.cpp 
[100%] Linking CXX executable C__Threads 
/home/leo/clion-2017.2.3/bin/cmake/bin/cmake -E cmake_link_script CMakeFiles/C__Threads.dir/link.txt --verbose=1 
/usr/bin/c++ -fcilkplus -g CMakeFiles/C__Threads.dir/main.cpp.o -o C__Threads 
make[3]: Leaving directory '/home/leo/CLionProjects/C++Threads/cmake-build-debug' 
[100%] Built target C__Threads 
make[2]: Leaving directory '/home/leo/CLionProjects/C++Threads/cmake-build-debug' 
/home/leo/clion-2017.2.3/bin/cmake/bin/cmake -E cmake_progress_start /home/leo/CLionProjects/C++Threads/cmake-build-debug/CMakeFiles 0 
make[1]: Leaving directory '/home/leo/CLionProjects/C++Threads/cmake-build-debug' 
+0

Clion verwendet [CMake] (https://cmake.org/) für seine Projekte. Ich schlage vor, Sie lesen seine [Dokumentation] (https://cmake.org/cmake/help/latest/index.html). –

+0

Das Problem ist nicht CMake. Ich denke, ich habe es geschafft, die Option -fcilkplus zu übergeben, aber die IDE wird nicht kompiliert (es gibt immer noch die rote Linie unter dem Schlüsselwort cilk_spawn). – leqo

+0

Wenn Sie [die 'cilk-plus'-Tag-Info] lesen (https://stackoverflow.com/tags/cilk-plus/info), heißt es "** Intel® ** Cilk ™ Plus ist eine Erweiterung von C und C++ "(Hervorhebung meiner). Intel Spracherweiterungen wie diese sind normalerweise nur in den Intel Compilern, sind Sie sicher, dass GCC es unterstützt? –

Antwort

1

Sie müssen gesetzt CMAKE_CXX_FLAGSvor Sie das schaffen Ziel mit add_executable.

Aber ich schlage vor, Sie verwenden target_compile_option statt:

target_compile_options(C__Threads PUBLIC -fcilkplus) 

Natürlich ist diese nach der add_executable getan werden muss.

+0

Ich fügte hinzu, was Sie vorgeschlagen haben. Der Build ist erfolgreich, aber das Programm wird nicht ausgeführt (die roten Linien unter cilk_spawn sind noch vorhanden). Übrigens habe ich den Inhalt von CMakeLists.txt und die Build-Ausgabe aktualisiert. – leqo

+0

@leqo Das "wird nicht laufen" und die roten Linien sind zwei verschiedene Probleme, unabhängig vom Build-Problem. Die Schlangenlinien sind wahrscheinlich, weil Cilk eine * Erweiterung * der Sprache ist, eine, die CLion noch nicht erkennt. Das "will not run" -Problem ist leider nicht etwas, womit ich helfen kann, und ist das Thema für eine andere Frage. –

+0

@leqo Oh, und bitte aktualisieren Sie den Code in der Frage nicht, um Lösungen von Antworten zu enthalten, da die Frage plötzlich nicht mehr gestellt wird und die Antworten wertlos werden. Stattdessen markieren Sie entweder eine Antwort als akzeptiert (klicken Sie auf das "Häkchen" neben der Antwort), um zu sagen, dass es die Antwort war, die * dieses * Problem gelöst hat. Oder wenn eine Antwort hilfreich war, fügen Sie einen Kommentar hinzu, dass es geholfen hat, aber das Problem nicht vollständig gelöst hat, und möglicherweise abstimmen. Sie können dann Ihre Frage zu * hinzufügen *, dass "diese Antwort geholfen, aber ich habe immer noch diese Probleme" bearbeiten. –