微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为项目中的Win和Linux提供SDL2头文件

我想提供所有编译为我的项目的一部分的外部库,以便用户不必下载任何东西。 我正在使用CMake来pipe理这个项目。 我有一个SDL2的问题。 它的包含文件对于不同的平台是相同的,除了构buildSDL2本身时生成的“SDL_config.h”,并且依赖于编译器/平台。

因此我需要提供两个SDL_config.h文件一个用于windows,一个用于linux。 如果我也想自动化构build过程,我已经提出了两个想法:

一个ifdef _WIN32 / unix子句放在SDL头文件中,以包含相应的SDL_config.h文件

保持SDL文件不变,并build立一个构build脚本,将正确的SDL_config.h文件放在include目录中

是否有一个与eventfd相当的Windows?

跨平台networking代码在C + +?

我可以在我的Mac上生成可在Windows上使用的python可执行文件吗?

SWT:在Windows中运行在OSX上开发的应用程序

我需要debuggingpthreads?

什么是做我想要的最优雅/平常的方式?

Qt程序在Windows中的多段线绘图上崩溃

使用Symfony Process运行asynchronousPHP任务

我如何制作一个Java跨平台的GUI应用程序(Windows,Linux)? 我应该使用什么工具?

C编程 – Linux和OSX之间的区别

在C中改变当前进程的优先级

一个ifdef _WIN32 / unix子句放在SDL头文件中,以包含相应的SDL_config.h文件

修改文件这样的问题不应该是一个选项,或者至少它应该是你的最后一个资源。

保持SDL文件不变,并建立一个构建脚本,将正确的SDL_config.h文件放在include目录中

你正在使用cmake。 您不需要构建脚本。

创建一个目录,并在那里放置两个版本的SDL_config.h 。 然后:

如果你想要在复制(路径或其他)期间替换内部的变量,可能cmake命令configure_file是你正在寻找的:

文件复制到其他位置并修改内容

否则,如果所有你想要的是将一个文件一个位置复制到另一个位置,cmake命令file是进入其copY签名的方式:

copY签名将文件,目录和符号链接复制到目标文件夹。

在这两种情况下,都必须在CMakeLists.txt使用WIN32 , MSVC , UNIX和whatelse if / else语句。 相当恼人的写作和保持的确如此。

这就是说,你再次使用cmake。 用它来结束。

您可以浏览cmake模块ExternalProject ,而不是为每个系统和编译器的每个组合提供每个依赖项的编译版本。 通过使用它,您可以在cmake运行时下载和编译即时依赖项。

这是一个更加优雅的解决方案,不需要用户在他们的机器上手动安装依赖项。 而且,维护更容易,而且基于CMakeLists.txt的目标系统,没有任何丑陋的if / else。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐