Nếu tôi biên dịch trên dòng lệnh với g ++ trực tiếp, tôi có thể nhìn thấy tất cả mọi thứ tôi cần là ở đó:Làm thế nào để CMake nhận ra pthread trên Ubuntu?
$ g++ -pthread test.cpp
$ ldd a.out
linux-vdso.so.1 => (0x00007fffd05b3000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f4a1ba8d000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f4a1b870000)
...more...
Sau đó, tôi cố gắng tạo ra một tập tin cmake đơn giản cho 5 dòng ứng dụng này kiểm tra:
$ cat CMakeLists.txt
PROJECT (Test CXX)
CMAKE_MINIMUM_REQUIRED (VERSION 2.8)
FIND_PACKAGE (Threads REQUIRED)
ADD_EXECUTABLE (test test.cpp)
TARGET_LINK_LIBRARIES (test ${CMAKE_THREAD_LIBS_INIT})
Tuy nhiên, tôi không thể tìm ra lý do tại sao CMake không tìm thấy những gì nó cần để sử dụng cho Threads
:
$ cd build/
$ cmake ..
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (MESSAGE):
Could NOT find Threads (missing: Threads_FOUND)
Call Stack (most recent call first):
/usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:288 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-2.8/Modules/FindThreads.cmake:166 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
CMakeLists.txt:4 (FIND_PACKAGE)
-- Configuring incomplete, errors occurred!
Người ta phải lưu ý rằng khai báo 'DỰ ÁN ...' phải được khai báo trước khi 'Tìm ... 'thực sự được sử dụng. –