项目场景:使用qt creator编译libtorch 时,会遇到
提示:这里简述项目相关背景:
error: C2059: 语法错误:“)” static constexpr c10::BFloat16 min() {
return c10::BFloat16(0x0080, c10::BFloat16::from_bits());
}
这个错误
原因分析:
https://blog.csdn.net/qq_43765210/article/details/134247540?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-134247540-blog-86534865.235%5Ev43%5Epc_blog_bottom_relevance_base4&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-134247540-blog-86534865.235%5Ev43%5Epc_blog_bottom_relevance_base4&utm_relevant_index=2
这边文章已经给出了比较详细的解释
解决方案:
使用
#undef min
#undef max
都可以解决
同时给出关于cmakelists.txt 的详细配置
cmake_minimum_required(VERSION 3.10)
set(LIB_NAME BianYanLibtorchAnalysis)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
include(CheckLanguage)
check_language(CUDA)
set(LIB_SOURCES
CAnalysisImage.h
CAnalysisImage.cpp
BianYanLibtorchAnalysis_global.h
)
add_library(${LIB_NAME} SHARED ${LIB_SOURCES})
enable_language(CUDA)
set(CONDA_PATH “C:/Users/fengzeming/.conda/envs/pytorch”)
set(ENV{PATH} “
C
O
N
D
A
P
A
T
H
/
b
i
n
:
{CONDA_PATH}/bin:
CONDAPATH/bin:ENV{PATH}”)
set(ENV{CONDA_PREFIX} ${CONDA_PATH})
find_package(CUDA REQUIRED)
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -std=c++17)
set(CMAKE_CUDA_STANDARD 17)
set(OpenCV_DIR “D:/qt/opencv_env/opencv/build”)
Find OpenCV package
find_package(OpenCV REQUIRED)
查找 libtorch 包
set(Torch_DIR “C:/Users/fengzeming/Downloads/libtorch-win-shared-with-deps-2.3.1+cu121/libtorch/share/cmake/Torch”)
set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}”)
find_package(Torch REQUIRED)
message(STATUS "TORCH_INCLUDE_DIRS:
T
O
R
C
H
I
N
C
L
U
D
E
D
I
R
S
"
)
t
a
r
g
e
t
i
n
c
l
u
d
e
d
i
r
e
c
t
o
r
i
e
s
(
{TORCH_INCLUDE_DIRS}") target_include_directories(
TORCHINCLUDEDIRS")targetincludedirectories({LIB_NAME} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${OpenCV_INCLUDE_DIRS}
KaTeX parse error: Expected 'EOF', got '#' at position 25: …LUDE_DIRS} #̲{TORCH_INCLUDE_DIRS}
)
target_link_libraries(${LIB_NAME} PUBLIC
${OpenCV_LIBS}
${CUDA_LIBRARIES}
${TORCH_LIBRARIES}
)
设置编译选项
set_property(TARGET ${LIB_NAME} PROPERTY CXX_STANDARD 17)
消除 Qt 和 libtorch 的兼容性警告
if (MSVC)
set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} /wd4251 /wd4275”)
endif()
add_subdirectory(AnalysisStratify)
target_compile_definitions(BianYanLibtorchAnalysis PRIVATE BIANYANLIBTORCHANALYSIS_LIBRARY)