-
-
Notifications
You must be signed in to change notification settings - Fork 892
Open
Labels
Description
Xmake 版本
2.9.8+2025032
操作系统版本和架构
ubuntu 22.04
描述问题
我安装了libtorch[cuda] 2.6, nvcc 12.4, 使用cmake已经能够正常使用. 但是使用xmake会build不通过. 报错 /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules/conv.h:104:27: error: cannot convert ‘const torch::enumtype::kFanIn’ to ‘int’
期待的结果
正常编译, 可以打印cuda信息
工程配置
add_rules("mode.debug", "mode.release")
-- 添加 C++ 标准
set_languages("c++14")
set_runtimes("MD") -- 设置所有包为动态链接
add_requires("opencv") -- 添加 OpenCV 依赖
add_packages("opencv") -- 链接 OpenCV 库
local libtorch = "/home/lzm/env/libtorch"
add_requires(
"cmake::Torch",
{
system = true,
configs = {
share = true,
envs = {CMAKE_PREFIX_PATH = libtorch},
presets = {CMAKE_BUILD_TYPE = "Release"},
CUDA = true
}
}
)
add_packages("cmake::Torch")
-- 添加 libtorch 的头文件路径
add_includedirs(path.join(libtorch, "include"))
add_includedirs(path.join(libtorch, "include/torch/csrc/api/include"))
-- 添加 libtorch 的库路径
add_linkdirs(path.join(libtorch, "lib"))
-- 添加 libtorch 的链接库
add_links("torch", "torch_cpu", "c10")
add_links("torch_cuda", "c10_cuda") -- 如果使用 CUDA,还需要添加 CUDA 库
target("xmakePrac")
set_kind("binary")
add_files("src/*.cpp")附加信息和错误日志
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules/conv.h:104:27: error: cannot convert ‘const torch::enumtype::kFanIn’ to ‘int’
104 | init::kaiming_uniform_(
| ~~~~~~~~~~~~~~~~~~~~~~^
| |
| const torch::enumtype::kFanIn
105 | weight,
| ~~~~~~~
106 | /*a=*/std::sqrt(5)); // NOLINT(cppcoreguidelines-avoid-magic-numbers)
| ~~~~~~~~~~~~~~~~~~~
In file included from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn.h:5,
from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/all.h:15,
from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/torch.h:3,
from src/main.h:4,
from src/main.cpp:1:
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/init.h:97:17: note: initializing argument 3 of ‘at::Tensor torch::nn::init::kaiming_uniform_(at::Tensor, double, int, int)’
97 | FanModeType mode = torch::kFanIn,
| ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
In file included from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules.h:20,
from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn.h:7,
from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/all.h:15,
from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/torch.h:3,
from src/main.h:4,
from src/main.cpp:1:
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules/conv.h: In instantiation of ‘const torch::ExpandingArray<D>& torch::nn::ConvTransposeNdImpl<D, Derived>::padding() const [with long unsigned int D = 2; Derived = torch::nn::ConvTranspose2dImpl]’:
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules/conv.h:287:23: required from ‘void torch::nn::ConvTransposeNdImpl<D, Derived>::pretty_print(std::ostream&) const [with long unsigned int D = 2; Derived = torch::nn::ConvTranspose2dImpl; std::ostream = std::basic_ostream<char>]’
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules/conv.h:281:8: required from here
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules/conv.h:312:61: error: no matching function for call to ‘torch::nn::detail::ConvNdOptions<2>::padding() const’
312 | return std::get<ExpandingArray<D>>(this->options.padding());
| ~~~~~~~~~~~~~~~~~~~~~^~
In file included from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/data/dataloader_options.h:3,
from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/data/dataloader/base.h:3,
from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/data/dataloader/stateful.h:4,
from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/data/dataloader.h:3,
from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/data.h:3,
from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/all.h:9,
from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/torch.h:3,
from src/main.h:4,
from src/main.cpp:1:
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/options/conv.h:60:3: note: candidate: ‘decltype (*(torch::nn::detail::ConvNdOptions<D>*)this) torch::nn::detail::ConvNdOptions<D>::padding(const int&) [with long unsigned int D = 2; decltype (*(torch::nn::detail::ConvNdOptions<D>*)this) = torch::nn::detail::ConvNdOptions<2>&]’
60 | TORCH_ARG(padding_t, padding) = 0;
| ^~~~~~~~~
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/options/conv.h:60:3: note: candidate expects 1 argument, 0 provided
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/options/conv.h:60:3: note: candidate: ‘decltype (*(torch::nn::detail::ConvNdOptions<D>*)this) torch::nn::detail::ConvNdOptions<D>::padding(int&&) [with long unsigned int D = 2; decltype (*(torch::nn::detail::ConvNdOptions<D>*)this) = torch::nn::detail::ConvNdOptions<2>&]’
60 | TORCH_ARG(padding_t, padding) = 0;
| ^~~~~~~~~
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/options/conv.h:60:3: note: candidate expects 1 argument, 0 provided
In file included from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/functional/conv.h:3,
from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/functional.h:4,
from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn.h:4,
from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/all.h:15,
from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/torch.h:3,
from src/main.h:4,
from src/main.cpp:1:
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/options/conv.h:63:18: note: candidate: ‘decltype(auto) torch::nn::detail::ConvNdOptions<D>::padding(std::initializer_list<long int>) [with long unsigned int D = 2]’
63 | decltype(auto) padding(std::initializer_list<int64_t> il) {
| ^~~~~~~
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/options/conv.h:63:18: note: candidate expects 1 argument, 0 provided
In file included from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules.h:20,
from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn.h:7,
from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/all.h:15,
from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/torch.h:3,
from src/main.h:4,
from src/main.cpp:1:
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules/conv.h: In instantiation of ‘void torch::nn::ConvNdImpl<D, Derived>::reset_parameters() [with long unsigned int D = 2; Derived = torch::nn::ConvTranspose2dImpl]’:
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules/conv.h:100:5: required from ‘void torch::nn::ConvNdImpl<D, Derived>::reset() [with long unsigned int D = 2; Derived = torch::nn::ConvTranspose2dImpl]’
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules/conv.h:32:8: required from here
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules/conv.h:104:27: error: cannot convert ‘const torch::enumtype::kFanIn’ to ‘int’
104 | init::kaiming_uniform_(
| ~~~~~~~~~~~~~~~~~~~~~~^
| |
| const torch::enumtype::kFanIn
105 | weight,
| ~~~~~~~
106 | /*a=*/std::sqrt(5)); // NOLINT(cppcoreguidelines-avoid-magic-numbers)
| ~~~~~~~~~~~~~~~~~~~
In file included from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn.h:5,
from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/all.h:15,
from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/torch.h:3,
from src/main.h:4,
from src/main.cpp:1:
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/init.h:97:17: note: initializing argument 3 of ‘at::Tensor torch::nn::init::kaiming_uniform_(at::Tensor, double, int, int)’
97 | FanModeType mode = torch::kFanIn,
| ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
stack traceback:
[C]: in function 'error'
[@programdir/core/base/os.lua:1075]:
[@programdir/modules/core/tools/gcc.lua:966]: in function 'catch'
[@programdir/core/sandbox/modules/try.lua:123]: in function 'try'
[@programdir/modules/core/tools/gcc.lua:908]:
[C]: in function 'xpcall'
[@programdir/core/base/utils.lua:246]:
[@programdir/core/tool/compiler.lua:288]: in function 'compile'
[@programdir/modules/private/action/build/object.lua:100]: in function 'script'
[@programdir/modules/private/action/build/object.lua:131]: in function 'build_object'
[@programdir/modules/private/action/build/object.lua:156]: in function 'jobfunc'
[@programdir/modules/async/runjobs.lua:241]:
[C]: in function 'xpcall'
[@programdir/core/base/utils.lua:246]: in function 'trycall'
[@programdir/core/sandbox/modules/try.lua:117]: in function 'try'
[@programdir/modules/async/runjobs.lua:224]: in function 'cotask'
[@programdir/core/base/scheduler.lua:406]:
stack traceback:
[C]: in function 'error'
@programdir/core/base/os.lua:1075: in function 'base/os.raiselevel'
(...tail calls...)
@programdir/core/main.lua:329: in upvalue 'cotask'
@programdir/core/base/scheduler.lua:406: in function <@programdir/core/base/scheduler.lua:399>