我想提供所有编译为我的项目的一部分的外部库,以便用户不必下载任何东西。 我正在使用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签名的方式:
在这两种情况下,都必须在CMakeLists.txt使用WIN32 , MSVC , UNIX和whatelse if / else语句。 相当恼人的写作和保持的确如此。
这就是说,你再次使用cmake。 用它来结束。
您可以浏览cmake模块ExternalProject ,而不是为每个系统和编译器的每个组合提供每个依赖项的编译版本。 通过使用它,您可以在cmake运行时下载和编译即时依赖项。
这是一个更加优雅的解决方案,不需要用户在他们的机器上手动安装依赖项。 而且,维护更容易,而且基于CMakeLists.txt的目标系统,没有任何丑陋的if / else。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。