2011-05-23 45 views
2
GCC 4.6.0 
Linux 
cmake 2.8 

我使用cmake生成我的make文件cmake的find_package包。但是,在我的network_imp.c文件中,我需要執行一些線程。所以我已經包含頭文件#include <pthread.h>和我正在使用pthread_create()函數發現使用

如何告訴cmake使用此頭pthread.h和共享庫-lpthread?

我想過使用find_package,但我認爲我沒有正確使用它。這是我的CMakeLists.txt文件。

find_package(pthread) 

add_library(network SHARED network_imp.c) 

我得到當我嘗試做的錯誤是這樣的:

undefined reference to pthread_create 

非常感謝您的任何建議,

+0

[cmake和libpthread]可能的重複(http://stackoverflow.com/questions/1620918/cmake-and-libpthread) – mpromonet 2015-01-26 22:01:25

回答

3

一般來說,你應該使用target_link_libraries cmake的命令添加到您的可執行文件與其他鏈接庫。 find_package命令用於設置特殊的cmake變量,例如包含要鏈接的實際庫。

並且與pthread一起使用,您應該使用find_package(Threads)

here是您的特定問題的答案。

+1

你好貝都因,我只是想知道我怎麼知道我要找的名字。我知道我想要找到pthreads。但我怎麼知道它被稱爲線程?我在使用apache便攜式運行時API時問到的原因。我想找到apr軟件包?我試過Apr和APR,但是cmake make找不到它。非常感謝任何進一步的幫助。 – ant2009 2011-05-24 15:00:40