一张最小的构建表

👁️ 2 人浏览 💬 0 人评论 ❤️ 添加收藏

(本条路线统一用 g++ -std=c++17 -O0 -Wall 编译)⚠️ 判题机上跑不了 cmake,所以这一节练的是**它管的那件事**:**一张"目标 → 要哪些源文件 / 要连哪些别的目标"的表**。会读会写这张表,换到有 cmake 的地方就是几行配置。

#include <iostream>
#include <string>
#include <vector>

/* CMake 说到底就是一张"目标 → 它要哪些源文件 / 要连哪些别的目标"的表。
   跑不了 cmake,但这张表本身可以真跑。 */
struct Target {
    std::string name;
    std::vector<std::string> sources;
    std::vector<std::string> links;
};

int main() {
    std::vector<Target> ts{
        {"calc", {"calc.cpp"}, {}},
        {"app",  {"main.cpp"}, {"calc"}},
        {"tests",{"test.cpp"}, {"calc"}},
    };

    int total_sources = 0;
    int depends_on_calc = 0;
    for (const auto &t : ts) {
        total_sources += static_cast<int>(t.sources.size());
        for (const auto &l : t.links) if (l == "calc") depends_on_calc++;
    }

    std::cout << ts.size() << "/" << total_sources << "/"
              << depends_on_calc << "\n";
    return 0;
}
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论