2011-05-23 55 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