cmake和libpthread
我正在运行RHEL 5.1并使用gcc 。 
 我如何告诉cmake添加-pthread编译和链接? 
 下面应该是干净的(使用find_package )和work(find模块称为FindThreads ): 
 cmake_minimum_required (VERSION 2.6) find_package (Threads) add_executable (myapp main.cpp ...) target_link_libraries (myapp ${CMAKE_THREAD_LIBS_INIT}) 
@曼努埃尔是在那里的一部分。 您也可以添加编译器选项,如下所示:
如果你有CMake 3.1.0+, 这变得更容易 :
 set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) target_link_libraries(my_app Threads::Threads) 
如果你使用的是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_LIBS_INIT}") endif() 
较早的CMake版本可能需要:
 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 3.1+的前两种方法之一,你也需要set(THREADS_PREFER_PTHREAD_FLAG ON) 。 
这里是正确的anwser:
 ADD_EXECUTABLE(your_executable ${source_files}) TARGET_LINK_LIBRARIES( your_executable pthread ) 
相当于
 -lpthread