gmsh provides CMake targets:
find_package(gmsh CONFIG REQUIRED)
target_link_libraries(main PRIVATE $<IF:$<TARGET_EXISTS:gmsh::shared>,gmsh::shared,gmsh::lib>)