ubuntu

C++在Ubuntu中的跨平台开发技巧

小樊
33
2026-01-01 19:29:18
栏目: 编程语言

一 基础原则与标准先行

二 条件编译与可移植封装

三 构建系统与多平台工具链

四 常见坑与排查清单

五 最小可移植示例与构建脚本

#include <iostream>
#include <chrono>
#include <thread>
#include <filesystem>

// 跨平台休眠(毫秒)
inline void sleep_ms(int ms) {
#ifdef _WIN32
    Sleep(ms);
#else
    std::this_thread::sleep_for(std::chrono::milliseconds(ms));
#endif
}

int main() {
    std::cout << "Hello, cross-platform C++!\n";
    sleep_ms(500);

    // C++17 文件系统:路径分隔符自动适配
    std::filesystem::path p = "data/output.txt";
    std::cout << "Target: " << p << '\n';
    if (!std::filesystem::exists(p.parent_path())) {
        std::filesystem::create_directory(p.parent_path());
    }
    return 0;
}
cmake_minimum_required(VERSION 3.16)
project(CrossPlatformDemo LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_executable(demo main.cpp)

# 可选:查找依赖(示例)
# find_package(PkgConfig REQUIRED)
# pkg_check_modules(OPENCL REQUIRED opencl)
# target_link_libraries(demo ${OPENCL_LIBRARIES})
# target_include_directories(demo PRIVATE ${OPENCL_INCLUDE_DIRS})
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)
./demo

0
看了该问题的人还看了