我将 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 手册,但看不到我在这里做错了什么。
谢谢, 托比亚斯
最佳答案
尝试这样做:
if(SINGLE_MODE)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lglapi")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lglapi")
endif(SINGLE_MODE)
然后,您确定将 -lglapi
附加到现有的 ${CMAKE_CXX_FLAGS}
字符串。否则,看起来像是正在创建 CMake 列表。
关于c++ - 附加到 CMAKE_C_FLAGS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29901352/