使用CMake链接到pthread库(在CLion中)
我找遍了所有地方,但我不知道如何让CLion链接lpthread库。我知道w/gcc可以只键入-lpthread,但我需要在CLion中进行一些调试 这是我当前的CMakeLists文件:使用CMake链接到pthread库(在CLion中),c,cmake,pthreads,C,Cmake,Pthreads,我找遍了所有地方,但我不知道如何让CLion链接lpthread库。我知道w/gcc可以只键入-lpthread,但我需要在CLion中进行一些调试 这是我当前的CMakeLists文件: cmake_minimum_required(VERSION 3.3) project(lab4) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") include_directories(/usr/include/) link_directori
cmake_minimum_required(VERSION 3.3)
project(lab4)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
include_directories(/usr/include/)
link_directories(/usr/include/)
set(SOURCE_FILES lab4_v2.c)
add_executable(lab4 ${SOURCE_FILES})
在CMake 2.8.12之前:
find_package(Threads REQUIRED)
if(THREADS_HAVE_PTHREAD_ARG)
set_property(TARGET my_app PROPERTY COMPILE_OPTIONS "-pthread")
set_property(TARGET my_app PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread")
endif()
if(CMAKE_THREAD_LIBS_INIT)
target_link_libraries(my_app "${CMAKE_THREAD_LIBS_INIT}")
endif()
如果您有CMAKE 2.8.12+:
find_package(Threads REQUIRED)
if(THREADS_HAVE_PTHREAD_ARG)
target_compile_options(my_app PUBLIC "-pthread")
endif()
if(CMAKE_THREAD_LIBS_INIT)
target_link_libraries(my_app "${CMAKE_THREAD_LIBES_INIT}")
endif()
如果您有CMake 3.1.0+
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
target_link_libraries(my_app Threads::Threads)
如果要在CMake 3.1+中使用前两种方法之一,则需要:
set(THREADS_PREFER_PTHREAD_FLAG ON)
信息取自您应该使用:
对于C:
从CLion 2018.2和捆绑版3.12.0开始回答 我在这个线程中使用了其他答案来修改我的CMakeLists.txt,最终发现我必须用set()添加第二行来实现这一点。我的文件如下所示:
cmake_minimum_required(VERSION 3.12)
project(thread_test_project C)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread")
include_directories(.)
add_executable(thread_test
thread_test.c)
< C++ >
使用
这是关于CMake,而不是关于MaFixFor或CYONE…@ SoeCubndRD:如果我的答案帮助了你,考虑接受它。注意:也可能需要指定<代码> FundPosik(需要的线程)之前(源代码:):只有这个对我起作用,而不是上面提到的那些。有人能解释一下吗。
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread")
cmake_minimum_required(VERSION 3.12)
project(thread_test_project C)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread")
include_directories(.)
add_executable(thread_test
thread_test.c)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -pthread" )