Ответ 1
К сожалению, нет простого преобразования 1:1 из Makefile в CMakeLists. Поскольку CMake предполагается запускать на всех платформах, он не может полагаться на определенные платформой предположения, такие как GNU make, что усложняет ситуацию в определенных местах.
В частности, CMake предлагает очень мощный и довольно сложный механизм для использования библиотек: вы вызываете find_package имя вашей библиотеки, которое будет вызывать библиотеку выполните поиск script с вашего пути к модулю cmake. Этот script (который также написан в CMake) попытается определить местоположение заголовков библиотеки и файлов lib и сохранить их в нескольких переменных CMake, которые затем могут быть переданы в соответствующие команды CMake, такие как include_directories и target_link_libraries.
При таком подходе есть две проблемы: во-первых, вам нужен поиск script. К счастью, CMake поставляется с поисковыми скриптами для Pthreads, Boost и еще нескольких других, но если вы используете более экзотическую библиотеку, вам, возможно, придется самому написать поиск script, который сначала является загадочным опытом..
Вторая серьезная проблема заключается в том, что нет стандартного способа поиска script для возврата его результатов. Хотя существуют условные обозначения для используемых переменных, они часто не применяются. На практике это означает, что вам нужно будет проверить источник поиска script, чтобы узнать, как его использовать. К счастью, сценарии, которые поставляются с CMake, в основном хорошо документированы.
Встроенные скрипты расположены где-то вроде <cmake-install-prefix>/share/cmake-2.8/Modules
. Для вашего вопроса посмотрите файлы FindBoost.cmake и FindThreads.cmake(CMake должен автоматически ссылаться на стандартную библиотеку). Anycorn уже дал пример кода для использования Boost script, все, что вам нужно знать, находится в документации CMake или непосредственно в файлах поиска script.