如何移植包括mysql标头

时间:2015-09-28 11:11:08

标签: ios mysql linux windows portability

我有一个在linux上使用mysql库(libmysqlclient)的库,我将其移植到Windows,但我似乎遇到了一个"问题"与头文件的位置。在linux下,标题位于/usr/include/mysql下(至少对于Debian),因此使用标准包含路径时,它们将被包括在内:

#include <mysql/mysql.h>

但是,当在Windows下安装库时,主标题似乎位于c:\Program Files\MySQL\MySQL Connector C 6.1\include\mysql.h,这需要将其包括在内:

#include <mysql.h>

我也需要为iOS构建它,但此时我还不知道头文件的位置。

解决这个问题的正常方法是什么?我应该在linux下的include路径中添加/usr/include/mysql吗?不会为标题名称冲突的更高概率开放吗?

1 个答案:

答案 0 :(得分:1)

您可以通过检查预定义的符号来确定您正在运行的平台。有几个这样的宏列表浮动;这是一个:

http://nadeausoftware.com/articles/2012/01/c_c_tip_how_use_compiler_predefined_macros_detect_operating_system

然后,您可以根据平台#include不同的路径:

#if defined(_WIN32) || defined(_WIN64)
#  include <mysql.h>
#elif defined(__linux)
#  include <mysql/mysql.h>
#elif defined(__APPLE__)
#  include <whatever path works on iOS>
#else
#  error Unrecognized platform.
#endif

如果您需要在多个地方执行此操作,请将其放入您自己的一个包含文件中,然后#include,然后依次#include正确的mysql.h。

正如您已经建议的那样,另一个选项是在每个平台上设置包含路径,以便#include&lt; mysql.h&gt;作品。你使用哪一个是品味问题。