Я использую CMake для проекта, который поставляется в двух версиях, один из которых требует -lglapi, а другой нет.
До сих пор линии, которые мы использовали, выглядели следующим образом:
SET(CMAKE_C_FLAGS "-O3 -xSSE3 -restrict -lpthread -lX11 -ldrm")
SET(CMAKE_CXX_FLAGS "-O3 -xSSE3 -restrict -lpthread -lX11 -ldrm")
Я добавил оператор if в свой CMakeList.txt точно после этих строк:
if(SINGLE_MODE)
SET(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} " -lglapi")
SET(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} " -lglapi")
endif(SINGLE_MODE)
Переменная SINGLE_MODE определена немного вверх. Когда я использую команду сообщения для отображения содержимого переменных флага, это выглядит хорошо:
-O3 -xSSE3 -restrict -lpthread -lX11 -ldrm -lglapi
Но когда я начинаю компиляцию, я сталкиваюсь с ошибкой компиляции. Используя подробный режим, я понял, что в вызове компилятора это выглядит так:
-O3 -xSSE3 -restrict -lpthread -lX11 -ldrm; -lglapi
т.е. каким-то образом точка с запятой была добавлена перед добавлением -lglapi в список.
Кто-нибудь здесь сталкивался с подобной проблемой и знает способ исправить эту проблему? Я давно искал Google и изучал руководство CMake, но не мог понять, что я сделал не так.
Спасибо, Tobias