2017-10-06 85 views
0

我需要使用Cilk的加注释在我的C++程序,是这样的:的Cilk加上使用JetBrains的克利翁IDE(C++)注释

#inlcude <cilk/cilk.h> 

cilk_spawn myFunction(); 
cilk_sync; 

我使用JetBrains的克利翁IDE和我得到的错误宏替换后出错:无法解析类型'_Cilk_spawn'。我想知道是否有任何解决方案。 当然,从我的终端直接使用g ++,我只需添加选项-fcilkplus,但在这种情况下,我不知道如何解决这个问题。 这里是(更新)我的CMakeLists.txt文件的内容:

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) 

这是构建输出(更新):

/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为其项目使用[CMake](https://cmake.org/)。我建议你阅读它的[文档](https://cmake.org/cmake/help/latest/index.html)。 –

+0

问题不在于CMake。我想我设法通过了-fcilkplus选项,但IDE不会编译(cilk_spawn关键字下仍然有红色的波浪线)。 – leqo

+0

如果您[阅读'cilk-plus'标签信息](https://stackoverflow.com/tags/cilk-plus/info)它说“**英特尔®** Cilk™Plus是C和C++的扩展“(强调我的)。像这样的英特尔语言扩展通常只在英特尔编译器中使用,您确定GCC支持它吗? –

回答

1

您需要在创建设置CMAKE_CXX_FLAGS前目标与add_executable

不过,我建议你使用target_compile_option代替:

target_compile_options(C__Threads PUBLIC -fcilkplus) 

当然,这有的add_executable之后进行

+0

我添加了你的建议。构建成功,但程序不会运行(cilk_spawn下的那些红色波浪线仍然存在)。 顺便说一下,我更新了CMakeLists.txt的内容和构建输出。 – leqo

+0

@leqo“不会运行”,红色波浪线是两个不同的问题,与构建问题无关。这些波浪线可能是因为Cilk是该语言的扩展*,CLion尚未认识到这一点。不幸的是,“不会运行”的问题不是我能提供的帮助,而是另一个问题的主题。 –

+0

@leqo哦,请不要更新问题中的代码,以包含答案的解决方案,因为突然间问题不再有问题问题,并且它使得答案变得毫无价值。相反,只要将答案标记为已接受(单击答案旁边的“剔号”)即可表示它是解决此问题的答案。或者,如果答案有帮助,可以添加一个评论,说明它有帮助,但并未完全解决问题,并可能将其投票。然后你可以编辑你的问题*添加*“这个答案有帮助,但我仍然有这些问题”。 –