Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

link to pthread library using CMake (in CLion)

Tags:

I've looked all over and I can't figure out how to get CLion to link the lpthread library. I know that w/ gcc you can just type -lpthread, but I need to do some debugging in CLion.

Here's my current CMakeLists file:

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}) 
like image 734
somecbusnerd Avatar asked Nov 30 '15 05:11

somecbusnerd


1 Answers

Before 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() 

If you have 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() 

If you have CMake 3.1.0+

set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) target_link_libraries(my_app Threads::Threads) 

If you want to use one of the first two methods with CMake 3.1+, you will need:

set(THREADS_PREFER_PTHREAD_FLAG ON) 

Info taken from video by Anastasia Kazakova

like image 166
kroiz Avatar answered Sep 23 '22 23:09

kroiz