我有一个问题,其中CMake 无法检测到pthread。作为一种解决方法,我尝试过:
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lpthread")
但是,这会插入-lpthread
错误的位置:
/usr/bin/c++ -std=c++11 -D_GNU_SOURCE -Wall [manyflags ...] -lpthread \ CMakeFiles/connectivity_tool.dir/connectivity_tool/conn_tool.cpp.o \ -o connectivity_tool -rdynamic -lboost_system [many libraries...]
结果是:
/usr/bin/ld: /tmp/ccNvRifh.ltrans3.ltrans.o: undefined reference to symbol 'pthread_mutexattr_settype@@GLIBC_2.2.5' /lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line
当然,-lpthread
应当位于第三行的末尾,而不是第一行的末尾。
我该如何要么-lpthread
在此行的末尾添加CMake,要么以某种不可靠的方式修改生成的Makefile,以使其正常工作?
(如果答案涉及实际检测pthread,请回答链接的问题。)