Thật không may, không có đơn giản 1: 1 chuyển đổi từ Makefiles để CMakeLists. Vì CMake được cho là chạy trên tất cả các nền tảng, nó không thể dựa vào các giả định cụ thể của nền tảng như GNU làm, điều này làm phức tạp mọi thứ ở một số nơi nhất định.
Cụ thể, CMake cung cấp một cơ chế rất mạnh mẽ và khá phức tạp để sử dụng thư viện: Bạn gọi find_package với tên thư viện, sẽ gọi tập lệnh tìm kiếm thư viện từ đường dẫn mô-đun cmake của bạn. Kịch bản này (cũng được viết bằng CMake) sẽ cố gắng phát hiện vị trí của các tệp thư mục và lib của thư viện và lưu chúng trong một vài biến CMake mà sau đó có thể được chuyển tới các lệnh CMake như include_directories và target_link_libraries.
Có hai vấn đề với cách tiếp cận này: Trước tiên, bạn cần tập lệnh tìm kiếm. May mắn thay, CMake có các kịch bản tìm kiếm cho Pthreads, Boost và một vài thứ khác, nhưng nếu bạn đang sử dụng một thư viện kỳ lạ hơn, bạn có thể phải tự viết kịch bản tìm kiếm, đó là một trải nghiệm phức tạp ...
Vấn đề lớn thứ hai là không có cách nào tiêu chuẩn cho tập lệnh tìm kiếm trả về kết quả của nó. Mặc dù có các quy ước đặt tên cho các biến được sử dụng, các quy ước này thường không áp dụng. Trong thực tế điều đó có nghĩa là bạn sẽ phải kiểm tra nguồn của tập lệnh tìm kiếm để biết cách sử dụng nó. May mắn thay, các kịch bản đi kèm với CMake chủ yếu được viết rất tốt.
Các tập lệnh dựng sẵn được đặt ở đâu đó như <cmake-install-prefix>/share/cmake-2.8/Modules
. Đối với câu hỏi của bạn, hãy xem các tệp FindBoost.cmake và FindThreads.cmake (CMake sẽ tự động liên kết với thư viện chuẩn). Anycorn đã đưa ra một số mã mẫu để sử dụng kịch bản lệnh Boost, mọi thứ khác bạn cần biết là trong tài liệu CMake hoặc trực tiếp trong các tệp kịch bản tìm kiếm.