Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何仅在使用CMake的Linux版本上使用特定于Linux的API和库?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我有一个项目,我在 Linux(主要)上运行,但有时在Darwin / Mac OS X上运行.我使用CMake在Linux上生成Makefile,在Mac OS X上生成Xcode项目.到目前为止,这一点运行良好. 现在我想使用一些特定于Linux的函数(clock_gettime()和相关函数).当我尝试使用clock_gettime()时,我在Mac OS X上遇到链接器错误,因此我认为它仅
@H_450_15@
我有一个项目,我在 Linux(主要)上运行,但有时在Darwin / Mac OS X上运行.我使用CMake在Linux上@L_168_3@makefile,在Mac OS X生成Xcode项目.到目前为止,这一点运行良好.

现在我想使用一些特定于Linux的函数(clock_gettime()和相关函数).当我尝试使用clock_gettime()时,我在Mac OS X上遇到链接错误,因此我认为它仅在Linux上可用.我准备在.c文件中引入有条件编译的代码,以便在Linux上使用clock_gettime(),在Mac OS上使用普通的旧时钟(). (顺便说一句,我打算使用#include< unistd.h>和#if _POSIX_TIMERS> 0作为预处理程序表达式,除非有人有更好的选择.)

当谈到CMakeLists.txt文件时,事情变得棘手.仅在跨平台CMake项目中的Linux构建下引入与特定于Linux的API的链接的首选方法是什么?

注意:此问题的早期版本包含对glibc的引用,这些内容过于具体且令人困惑.问题实际上是在跨平台CMake项目中使用特定于Linux的API和库的正确方法.

@H_262_27@解决方法
从您的示例中抽象出来,并回答这个问题:

CMake提供了numerous useful constants,您可以检查以确定您正在运行的系统:

if (${UNIX})
  # *nix-specific includes or actions
elsif (${WIN32})
  # Windows-specific includes or actions
elsif (${APPLE})
  # ...
endif (${UNIX})

大佬总结

以上是大佬教程为你收集整理的如何仅在使用CMake的Linux版本上使用特定于Linux的API和库?全部内容,希望文章能够帮你解决如何仅在使用CMake的Linux版本上使用特定于Linux的API和库?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。