80 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
cmake_minimum_required(VERSION 3.27)
 | 
						|
project(HelloAstro)
 | 
						|
 | 
						|
# Define platform-specific paths and libraries
 | 
						|
if(WIN32)
 | 
						|
    # GLFW
 | 
						|
    set(GLFW_PATH "C:/libs/glfw-3.3.8.bin.WIN64")
 | 
						|
    include_directories(${GLFW_PATH}/include)
 | 
						|
    link_directories(${GLFW_PATH}/lib-vc2022)
 | 
						|
 | 
						|
    # GLEW
 | 
						|
    set(GLEW_PATH "C:/libs/glew-2.2.0")
 | 
						|
    include_directories(${GLEW_PATH}/include)
 | 
						|
    link_directories(${GLEW_PATH}/lib/Release/x64)
 | 
						|
 | 
						|
    # OpenGL
 | 
						|
    find_package(OpenGL REQUIRED)
 | 
						|
elseif(UNIX)
 | 
						|
    find_package(PkgConfig REQUIRED)
 | 
						|
    pkg_search_module(GLFW REQUIRED glfw3)
 | 
						|
    find_package(GLEW REQUIRED)
 | 
						|
    find_package(OpenGL REQUIRED)
 | 
						|
elseif(APPLE)
 | 
						|
    message(FATAL_ERROR "macOS is not supported yet.")
 | 
						|
endif()
 | 
						|
 | 
						|
add_executable(${PROJECT_NAME}
 | 
						|
    src/hello.cpp
 | 
						|
    src/io.cpp
 | 
						|
    src/triangle.cpp
 | 
						|
    src/gfx.cpp
 | 
						|
)
 | 
						|
 | 
						|
if(WIN32)
 | 
						|
    add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
 | 
						|
        COMMAND ${CMAKE_COMMAND} -E copy_if_different
 | 
						|
        "${GLEW_PATH}/bin/Release/x64/glew32.dll"
 | 
						|
        $<TARGET_FILE_DIR:${PROJECT_NAME}>
 | 
						|
    )
 | 
						|
 | 
						|
    target_link_libraries(${PROJECT_NAME} glfw3)
 | 
						|
    target_link_libraries(${PROJECT_NAME} glew32)
 | 
						|
    target_include_directories(${PROJECT_NAME} PRIVATE ${GLEW_INCLUDE_DIRS})
 | 
						|
    target_link_libraries(${PROJECT_NAME} OpenGL::GL)
 | 
						|
elseif(UNIX)
 | 
						|
    include_directories(${GLFW_INCLUDE_DIRS})
 | 
						|
    target_link_libraries(${PROJECT_NAME} ${GLFW_LIBRARIES})
 | 
						|
    target_link_libraries(${PROJECT_NAME} GLEW::GLEW)
 | 
						|
    target_link_libraries(${PROJECT_NAME} OpenGL::GL)
 | 
						|
endif()
 | 
						|
 | 
						|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/vert.glsl
 | 
						|
               ${CMAKE_CURRENT_BINARY_DIR}/vert.glsl COPYONLY)
 | 
						|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/frag.glsl
 | 
						|
               ${CMAKE_CURRENT_BINARY_DIR}/frag.glsl COPYONLY)
 | 
						|
 | 
						|
# Append Git version to built executable after it has been built
 | 
						|
find_package(Git)
 | 
						|
if (GIT_FOUND)
 | 
						|
    if (WIN32)
 | 
						|
        set(TARGET_EXTENSION ".exe")
 | 
						|
    elseif(UNIX)
 | 
						|
        set(TARGET_EXTENSION "")
 | 
						|
    endif()
 | 
						|
    add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
 | 
						|
        COMMAND ${CMAKE_COMMAND}
 | 
						|
            -DTARGET_DIR=$<TARGET_FILE_DIR:${PROJECT_NAME}>
 | 
						|
            -DPROJECT_NAME=${PROJECT_NAME}
 | 
						|
            -DTARGET_EXTENSION=${TARGET_EXTENSION}
 | 
						|
            -P ${CMAKE_CURRENT_SOURCE_DIR}/add_git_version_to_executable.cmake
 | 
						|
    )
 | 
						|
else()
 | 
						|
    message("Git not found - will not rename the exectuable.")
 | 
						|
endif()
 | 
						|
 | 
						|
# Include header-only libraries
 | 
						|
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/lib/astro/include)
 | 
						|
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/lib/glm)
 | 
						|
 |