我正在使用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变量在上面稍微定义了一下。当我使用message命令来显示标志变量的内容时,它看起来还不错:
-O3 -xSSE3 -restrict -lpthread -lX11 -ldrm -lglapi
但是当我开始编译时,遇到了一个编译错误。通过使用详细模式,我意识到在编译器调用中它看起来像这样:
-O3 -xSSE3 -restrict -lpthread -lX11 -ldrm; -lglapi
就是某种方式在将-lglapi添加到列表之前添加了一个分号。
这里有人遇到过类似的问题并知道如何解决吗?我已经谷歌了一段时间并研究了CMake手册,但无法找出我的错误所在。
谢谢, 托比亚斯
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lglapi")
吗?这行代码用来设置C++编译器的标志,增加链接到OpenGL API库的选项。 - jpo38