gpt4 book ai didi

c - 如何仅在使用 CMake 构建的 Linux 上使用特定于 Linux 的 API 和库?

转载 作者:IT王子 更新时间:2023-10-29 00:51:21 24 4
gpt4 key购买 nike

我有一个项目(主要)在 Linux 上运行,但有时在 Darwin/Mac OS X 上运行。我使用 CMake 在 Linux 上生成 Makefile,在 Mac OS X 上生成一个 Xcode 项目。到目前为止,它运行良好。

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

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

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

最佳答案

从你的例子中抽象出来,只回答这个问题:

How to use Linux-specific APIs and libraries only on Linux builds with CMake?

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

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

关于c - 如何仅在使用 CMake 构建的 Linux 上使用特定于 Linux 的 API 和库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8774866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com