簡體   English   中英

包含 *.cpp 文件

[英]Include a *.cpp file

目前,我嘗試 bazelize 一個圖書館。 我們稱這個庫為 lib_foo

設置類似於這個最小示例。 我的主要應用程序嘗試使用 function 形式的lib_foo

主.cpp:

#include "lib_foo/header.h"

#include <iostream>

int main() {
    std::cout << foo<2>() << std::endl;
}

lib_foo/header.h:

#pragma once

#include "impl.inc" // works

lib_foo/impl.inc:

template <int number>
int foo() {
    return number;    
}

構建.bazel:

cc_library(
    name = "lib_foo",
    srcs = [
        "lib_foo/header.h",
        "lib_foo/impl.inc",
    ],
)

cc_binary(
    name = "HelloWorld",
    srcs = [
        "main.cpp",
    ],
    deps = [":lib_foo"],
)

還有一個空的WORKSPACE文件。

如果我運行bazel run //:HelloWorld一切都按預期工作。

如果我將文件impl.inc重命名為impl.cpp (並在 BUILD 和包含文件等中相應地更改它)。 我遇到以下問題(在 Ubuntu 20.04 上):

In file included from main.cpp:1:
lib_foo/header.h:3:10: fatal error: impl.cpp: No such file or directory
    3 | #include "impl.cpp"
    |          ^~~~~~~~~

此外,將包含路徑替換為 WORKSPACE 文件的相對路徑也無濟於事。

在 Bazel 中包含 cpp 文件似乎是一個普遍的問題。 由於我嘗試 bazelize 的第三方庫確實包含多次 cpp 文件,我想知道這里有什么合適的解決方法。

有任何想法嗎?

(我在 Ubuntu 20.04 上使用 Bazel 3.7.2)

正常的解決方法是將包含的 cpp 文件放在cc_librarytextual_hdrs屬性中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM