2016-11-01 57 views
1

我想有以下配置的CMakeLists.txt:的CMake未能找到主題包神祕的錯誤消息

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/3.6的CMake PI樹莓.2在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;} 

所以我不知道如何解決這個問題。有任何想法嗎?我的CMakelists.txt是否丟失了某些東西,或者我應該丟失一個包?

回答

2

以你的代碼我複製你的錯誤,它似乎是從這個後續的錯誤:

-- 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. 

兩個可能的解決方案:

  1. 添加C到項目中的語言:

    project(MotionBlow C CXX) 
    
  2. 添加.c EXTENS離子有效的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 install libpthread-stubs0-dev

參考

+1

中添加C的工作,但只有RM後-rf'ing該死的cmake生成的文件(我嘗試添加C幾次之前)。在此之前,即使是有政策的人也沒有這樣做。無論如何,謝謝! – morynicz