Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmake无法找到包含神秘错误消息的线程包_Cmake_Pthreads - Fatal编程技术网

Cmake无法找到包含神秘错误消息的线程包

Cmake无法找到包含神秘错误消息的线程包,cmake,pthreads,Cmake,Pthreads,我正在尝试使用以下CMakeLists.txt进行配置: cmake_minimum_required(VERSION 3.2) project(MotionBlow CXX) find_package(Threads REQUIRED)

我正在尝试使用以下CMakeLists.txt进行配置:

cmake_minimum_required(VERSION 3.2)                                                                                                    
project(MotionBlow CXX)
find_package(Threads REQUIRED)                                                                                                     
find_package(Boost COMPONENTS system program_options REQUIRED)                                                                     
include(gtest.cmake)

add_executable(motionBlow src/blow.cpp)
target_include_directories(motionBlow PUBLIC include)
target_link_libraries(motionBlow RTIMULib ${Boost_LIBRARIES})
set_property(TARGET motionBlow PROPERTY CXX_STANDARD 14)

add_executable(chat_client src/chat_client.cpp)
target_include_directories(chat_client PUBLIC include)
target_link_libraries(chat_client ${Boost_LIBRARIES} Threads::Threads)
set_property(TARGET chat_client PROPERTY CXX_STANDARD 14)

add_executable(chat_server src/chat_server.cpp)
target_include_directories(chat_server PUBLIC include)
target_link_libraries(chat_server ${Boost_LIBRARIES} Threads::Threads)
set_property(TARGET chat_server PROPERTY CXX_STANDARD 14)

enable_testing()

add_executable(matrixTest test/MatrixTest.cpp src/Matrix.cpp)
target_include_directories(matrixTest PUBLIC include ${GTEST_INCLUDE_DIR})
target_link_libraries(matrixTest ${GTEST_LIBRARY} Threads::Threads)
set_property(TARGET matrixTest PROPERTY CXX_STANDARD 14)
在ubunutu 16.04上它可以正常工作,但在Raspbian 8.0/Cmake 3.6.2的raspberry pi和ubuntu 15.10/Cmake 3.2.2上我都可以看到

CMake Error at /usr/share/cmake-3.2/Modules/FindPackageHandleStandardArgs.cmake:138 (message):
  Could NOT find Threads (missing: Threads_FOUND)
Call Stack (most recent call first):
  /usr/share/cmake-3.2/Modules/FindPackageHandleStandardArgs.cmake:374 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.2/Modules/FindThreads.cmake:204 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:4 (find_package)
不幸的是,错误日志仅包含以下内容:

Determining if files pthread.h exist failed with the following output:

Source:
/* */
#include <pthread.h>


int main(void){return 0;}
确定文件pthread.h是否存在失败,输出如下:
资料来源:
/* */
#包括
int main(void){返回0;}

所以我不知道怎么把它修好。有什么想法吗?我的CMakelists.txt是否丢失了某些内容,或者我是否应该获得丢失的软件包?

使用您的代码,我可能会重现您的错误,这似乎是由此产生的后续错误:

-- Looking for include file pthread.h
CMake Error at /usr/share/cmake-3.2/Modules/CheckIncludeFiles.cmake:74 (try_compile):
  Unknown extension ".c" for file
  try_compile() works only for enabled languages.  Currently these are:

    CXX

  See project() command to enable other languages.
两种可能的解决办法:

  • C
    添加到项目语言中:

    project(MotionBlow C CXX)
    
  • <> >添加<代码> .c>代码>扩展:一个有效的C++文件:

    MotionBlowMakeRulesOverwrite.cmake

    list(APPEND CMAKE_CXX_SOURCE_FILE_EXTENSIONS c)
    
    CMakeLists.txt

    cmake_minimum_required(VERSION 3.2)
    set(CMAKE_USER_MAKE_RULES_OVERRIDE "MotionBlowMakeRulesOverwrite.cmake")
    project(MotionBlow CXX)
    
    如果这些都不起作用,请检查是否安装了
    pthread

    sudo apt get安装libpthread-stubs0-dev

    参考资料


    添加C是有效的,但只有在rm-rf'ing了该死的cmake生成的文件之后(我之前尝试过添加C几次)。在此之前,即使是有政策的人也没有这样做。无论如何,谢谢!