c++ - 附加到 CMAKE_C_FLAGS

标签 c++ c cmake compiler-flags linker-flags

我将 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/

相关文章:

c++ - 自动转换 redux

c - 断开客户端与服务器 TCP

c++ - 如何将在依赖项 CMake 项目中创建的 Protobuf 生成的 .h 文件正确导入父 CMake 项目?

build-automation - 如何使用cmake包含目录的所有文件?

c++ - glDrawArrays访问冲突写入位置

c++ - 在 C++ 中计算 bit_Delta(double p1, double p2)

c++ - 对象和运算符重载 C++

c - 如何测试 SOCK_CLOEXEC/O_CLOEXEC 的功能(执行时关闭)

c - OpenGL 广告牌插值问题

cmake - 如何防止 CMake 从 add_subdirectory() 包含的项目中安装 ()-ing 目标?