当前位置: 首页 > 面试题库 >

CMAKE中特定于操作系统的说明:如何?

卢永寿
2023-03-14
问题内容

我是CMAKE的初学者。下面是一个简单的cmake文件,在mingw环境窗口中效果很好。问题显然与target_link_libraries()我链接libwsock32.a的CMAKE函数有关。在Windows中,这行得通,我得到结果。

但是,正如预期的那样,在Linux中,/usr/bin/ld将查找-lwsock32Linux OS上没有的遗嘱。

我的问题是:如何指示CMAKE避免在Linux OS中链接wsock32库???

任何帮助将不胜感激。

我的简单CMake文件:

 PROJECT(biourl)
 set (${PROJECT_NAME}_headers ./BioSocketAddress.h  ./BioSocketBase.h ./BioSocketBuffer.h ./BioSocketCommon.h  ./BioSocketListener.h  ./BioSocketPrivate.h  ./BioSocketStream.h ./BioUrl.h BioDatabase.h )

set (${PROJECT_NAME}_sources BioSocketAddress.C  BioSocketBase.C  BioSocketCommon.C BioSocketStream.C  BioUrl.C BioDatabase.C )

add_library(${PROJECT_NAME} STATIC ${${PROJECT_NAME}_headers} ${${PROJECT_NAME}_sources} )

# linkers
#find_library(ws NAMES wsock32 PATHS ${PROJECT_SOURCE_DIR} NO_SYSTEM_ENVIRONMENT_PATH NO_DEFAULT_PATH)

target_link_libraries(${PROJECT_NAME} bioutils wsock32)

install (TARGETS ${PROJECT_NAME}
       RUNTIME DESTINATION bin
       LIBRARY DESTINATION lib
       ARCHIVE DESTINATION lib/archive )

问题答案:

采用

if (WIN32)
    #do something
endif (WIN32)

要么

if (UNIX)
    #do something
endif (UNIX)

要么

if (MSVC)
    #do something
endif (MSVC)

或类似

请参阅CMake有用变量
和CMake检查平台



 类似资料:
  • 注意:“系统操作加固”功能需G01驱动正常加载才可使用。 “操作系统加固”功能可提高操作系统自身安全性和抗攻击能力,保护系统核心文件。针对操作系统核心资源,如系统文件、网络连接、进程等资源进行有效保护。

  • 问题内容: 有没有办法在npm package.json文件中指定特定于操作系统的依赖项? 例如,如果用户正在运行Linux ,我只想将’dbus’(https://npmjs.org/package/dbus)安装为模块的依赖项。对于Mac和Windows,我会有不同的依赖关系。 问题答案: 根据您的设置,有一种可能的好方法。 npm package.json支持os键, 还有可选的Depend

  • 问题内容: 我想用JUnit测试以下方法: 坦白说,我想出的唯一一件事就是基本上将相同的逻辑复制到测试中。当然,这可以防止方法被意外破坏,但是听起来有点违反直觉。 有什么更好的方法来测试此方法? 问题答案: 在单元测试中,您可以更改属性的值: 然后,您可以测试/调用您的方法以使用断言检查其返回的内容。 为了更容易设置System属性并在测试完成时取消设置该属性(从而促进测试隔离,自我约束),可以使

  • 一、添加监控源 进入监控矩阵页面,点击右上方的输入设置,跳出输入设置弹窗 输入监控源名称和监控源的rtmp流地址,点击确定即可出现监控窗口 同时支持添加多路视频源监控,点击添加输入源,会增加一栏输入源名称和输入源地址的输入框 添加完名称和输入源之后,需要点击确定才可生效。取消不会保存之前的输入配置。并且输入源确定之后不可以再次更改。 监控源删除,支持删除视频的监控视频源。点击右边的删除按钮即可删除

  • 一、 添加直播地址 点击右上角的添加直播地址,输入直播地址。直播地址支持rtmp/flv/hls三种直播视频格式。这里建议添加rtmp的直播地址,实时性更好,更稳定。 二、 选择入点时间和出点时间 鼠标移动到视频缩略图上的开始时间线和结束时间线,按住今天拖拉可以选择拆条视频的入点时间和出点时间,这个时间会在左下角实时显示 同时鼠标移动到入点出点时间上可以直接编辑进行精确定位 选中区域显示亮色,未选

  • 一、预监设置 1、 添加一路演示视频,打开预监开关,PVW预监和PGM输出同步; 2、音视频同步切换:默认勾选音视频同步,勾选输出音视频同源后,输出音频与输出视频源同步。输出视频源变动时,音频同步变动(画中画不同步); 3、切换按钮:点击后将预监画面(包括叠加的元素)输出到输出画面; 4路720P导播台: 8路1080P导播台: 4)关闭预监:切换按钮隐藏,预监开关为关闭状态,预监画面隐藏,输入流