c/c++语言开发共享附加到CMAKE_C_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变量定义了一点点。 当我使用message命令显示标志变量的内容时,它看起来没问题:

 -O3 -xSSE3 -restrict -lpthread -lX11 -ldrm -lglapi 

但是当我开始编译时,我遇到了编译错误。 使用详细模式我意识到在编译器调用中看起来像:

 -O3 -xSSE3 -restrict -lpthread -lX11 -ldrm; -lglapi 

也就是说,在将-lglapi添加到列表之前添加了分号。

这里有没有人遇到类似的问题,并知道解决这个问题的方法? 我用谷歌搜索了很长一段时间并研究了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列表。

    从CMake 3.4开始,您可以:

     string(APPEND CMAKE_CXX_FLAGS " -lglapi") 

    当你只想为一种语言设置标志时(上例中的C ++),这非常方便,但如果你想为所有语言设置相同的标志,你可以简单地做:

     add_compile_options(-lglapi) 

    这两个命令都会更改整个目录的标志,如果只想为一个目标设置标志,请执行以下操作:

     target_compile_options(my_lib PUBLIC -lglapi) 

    目标上的标志可以是PUBLIC,PRIVATE或INTERFACE ,允许将标志从一个目标传递到另一个目标。

      以上就是c/c++开发分享附加到CMAKE_C_FLAGS相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/549545.html

      (0)
      上一篇 2021年1月14日
      下一篇 2021年1月14日

      精彩推荐