[英]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_library
的textual_hdrs
屬性中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.