多平台C++项目:包含特定于平台的源

Chr*_*oph 3 c++ build multiplatform cmake

对于我的一些类,每个操作系统有不同的实现.
我的源结构是这样的:

  • 包括/ AExample.h
  • 包括/窗/ WindowsExample.h
  • 包括/ LINUX/LinuxExample.h
  • SRC/AExample.cpp
  • SRC /窗/ WindowsExample.cpp
  • SRC/LINUX/LinuxExample.cpp

A*类是特定实现的接口

我当前的构建系统是cmake - 但目前它只能构建linux版本.

在Windows构建中我只需要包含windows/*文件,而在Linux上只需要包含linux/*文件

我需要

  • 仅包含与我当前构建相关的文件
  • 当我需要AExample的实例时,选择正确的实现

您可以推荐哪些技术以专业的方式实现这一目标?

Ree*_*sey 8

这在CMake中相当容易.

只需让您的CMakeLists.txt文件检查平台,并根据需要添加相应的文件或包含相应的子目录.

基本语法是:

IF(WIN32)
    # Do windows specific includes
ELSEIF(UNIX)
    # Do linux specific includes
ENDIF(WIN32)
Run Code Online (Sandbox Code Playgroud)