You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
2.4 KiB

9 months ago
cmake_minimum_required(VERSION 3.22)
project(ProcessMesh)
list(APPEND CMAKE_PREFIX_PATH "F:/OCC/demo/opencascade-install" )
set(EXTERNAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/external")
set(CMAKE_CXX_STANDARD 17)
# set compile flags
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
add_executable(${PROJECT_NAME} src/main.cpp src/Utils/Utils.cpp)
# add_library(${PROJECT_NAME}_dev src/Utils/Utils.cpp)
target_include_directories(${PROJECT_NAME} PUBLIC src/Utils)
target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_SOURCE_DIR}/include)
# Eigen3
target_include_directories(${PROJECT_NAME} PUBLIC ${EXTERNAL_DIR}/eigen-3.4.0)
# libigl
target_include_directories(${PROJECT_NAME} PUBLIC ${EXTERNAL_DIR}/libigl/include)
# spdlog
target_include_directories(${PROJECT_NAME} PUBLIC ${EXTERNAL_DIR}/spdlog/include)
# MshIO
add_subdirectory(${EXTERNAL_DIR}/MshIO)
target_link_libraries(${PROJECT_NAME} PUBLIC mshio::mshio)
# ���� OpenMP
find_package(OpenMP REQUIRED)
if (OPENMP_FOUND)
message("OPENMP FOUND")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
endif ()
# OpenCascade
find_package(OpenCASCADE REQUIRED)
target_include_directories(${PROJECT_NAME} PUBLIC ${OpenCASCADE_INCLUDE_DIR})
# Boost
#find_package(Boost REQUIRED COMPONENTS filesystem system)
#target_link_libraries(${PROJECT_NAME}_dev PUBLIC Boost::filesystem Boost::system)
# Adjust runtime environment for Visual Studio
if (MSVC)
set_property(TARGET ${PROJECT_NAME} PROPERTY VS_DEBUGGER_ENVIRONMENT
"PATH=$<$<CONFIG:DEBUG>:${OpenCASCADE_BINARY_DIR}d>$<$<NOT:$<CONFIG:DEBUG>>:${OpenCASCADE_BINARY_DIR}>;%PATH%")
endif()
# Add linker options for Opencascade
if (MSVC)
message(STATUS "${OpenCASCADE_LIBRARIES}")
foreach (LIB ${OpenCASCADE_LIBRARIES})
target_link_libraries(${PROJECT_NAME} PUBLIC ${OpenCASCADE_LIBRARY_DIR}/${LIB}.lib)
target_link_libraries(${PROJECT_NAME} PUBLIC ${OpenCASCADE_LIBRARY_DIR}d/${LIB}.lib)
endforeach()
elseif (UNIX)
foreach (LIB ${OpenCASCADE_LIBRARIES})
target_link_libraries(${PROJECT_NAME} PUBLIC debug ${OpenCASCADE_LIBRARY_DIR}/lib${LIB}.so)
target_link_libraries(${PROJECT_NAME} PUBLIC optimized ${OpenCASCADE_LIBRARY_DIR}/lib${LIB}.so)
endforeach()
endif()
#target_link_libraries(${PROJECT_NAME} PUBLIC ${PROJECT_NAME}_dev)