我正在将 CMake 用于一个有两个版本的项目,其中一个需要 -lglapi,另一个不需要。
到目前为止,我们使用的行看起来像这样:
SET(CMAKE_C_FLAGS "-O3 -xSSE3 -restrict -lpthread -lX11 -ldrm")
SET(CMAKE_CXX_FLAGS "-O3 -xSSE3 -restrict -lpthread -lX11 -ldrm")
我在我的 CMakeList.txt 中添加了一条 if 语句,正好在这些行之后:
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
即,在将-lgapi 添加到列表之前,以某种方式添加了一个分号。
这里有没有人遇到过类似的问题并且知道解决这个问题的方法?我已经用谷歌搜索了一段时间并研究了 CMake 手册,但看不到我在这里做错了什么。
谢谢,托拜厄斯