mirror of
https://github.com/JoeyDeVries/LearnOpenGL.git
synced 2026-01-30 20:13:22 +08:00
Merge pull request #102 from rarest/master
For Xcode project: *.vs *.fs *.gs can be shown in project, changes made for shaders in project will come into effect when running
This commit is contained in:
@@ -175,19 +175,28 @@ set(LIBS ${LIBS} STB_IMAGE)
|
|||||||
add_library(GLAD "src/glad.c")
|
add_library(GLAD "src/glad.c")
|
||||||
set(LIBS ${LIBS} GLAD)
|
set(LIBS ${LIBS} GLAD)
|
||||||
|
|
||||||
|
macro(makeLink src dest target)
|
||||||
|
add_custom_command(TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E create_symlink ${src} ${dest} DEPENDS ${dest} COMMENT "mklink ${src} -> ${dest}")
|
||||||
|
endmacro()
|
||||||
|
|
||||||
# then create a project file per tutorial
|
# then create a project file per tutorial
|
||||||
foreach(CHAPTER ${CHAPTERS})
|
foreach(CHAPTER ${CHAPTERS})
|
||||||
foreach(DEMO ${${CHAPTER}})
|
foreach(DEMO ${${CHAPTER}})
|
||||||
file(GLOB SOURCE
|
file(GLOB SOURCE
|
||||||
"src/${CHAPTER}/${DEMO}/*.h"
|
"src/${CHAPTER}/${DEMO}/*.h"
|
||||||
"src/${CHAPTER}/${DEMO}/*.cpp"
|
"src/${CHAPTER}/${DEMO}/*.cpp"
|
||||||
|
"src/${CHAPTER}/${DEMO}/*.vs"
|
||||||
|
"src/${CHAPTER}/${DEMO}/*.fs"
|
||||||
|
"src/${CHAPTER}/${DEMO}/*.gs"
|
||||||
)
|
)
|
||||||
set(NAME "${CHAPTER}__${DEMO}")
|
set(NAME "${CHAPTER}__${DEMO}")
|
||||||
add_executable(${NAME} ${SOURCE})
|
add_executable(${NAME} ${SOURCE})
|
||||||
target_link_libraries(${NAME} ${LIBS})
|
target_link_libraries(${NAME} ${LIBS})
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set_target_properties(${NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin/${CHAPTER}")
|
set_target_properties(${NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin/${CHAPTER}")
|
||||||
elseif(UNIX)
|
elseif(UNIX AND NOT APPLE)
|
||||||
|
set_target_properties(${NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin/${CHAPTER}")
|
||||||
|
elseif(APPLE)
|
||||||
set_target_properties(${NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin/${CHAPTER}")
|
set_target_properties(${NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin/${CHAPTER}")
|
||||||
set_target_properties(${NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_BINARY_DIR}/bin/${CHAPTER}")
|
set_target_properties(${NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_BINARY_DIR}/bin/${CHAPTER}")
|
||||||
set_target_properties(${NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_BINARY_DIR}/bin/${CHAPTER}")
|
set_target_properties(${NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_BINARY_DIR}/bin/${CHAPTER}")
|
||||||
@@ -203,10 +212,13 @@ foreach(CHAPTER ${CHAPTERS})
|
|||||||
if(WIN32)
|
if(WIN32)
|
||||||
# configure_file(${SHADER} "test")
|
# configure_file(${SHADER} "test")
|
||||||
add_custom_command(TARGET ${NAME} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${SHADER} $<TARGET_FILE_DIR:${NAME}>)
|
add_custom_command(TARGET ${NAME} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${SHADER} $<TARGET_FILE_DIR:${NAME}>)
|
||||||
elseif(UNIX)
|
elseif(UNIX AND NOT APPLE)
|
||||||
file(COPY ${SHADER} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/bin/${CHAPTER})
|
file(COPY ${SHADER} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/bin/${CHAPTER})
|
||||||
|
elseif(APPLE)
|
||||||
|
# create symbolic link for *.vs *.fs *.gs
|
||||||
|
get_filename_component(SHADERNAME ${SHADER} NAME)
|
||||||
|
makeLink(${SHADER} ${CMAKE_CURRENT_BINARY_DIR}/bin/${CHAPTER}/${SHADERNAME} ${NAME})
|
||||||
endif(WIN32)
|
endif(WIN32)
|
||||||
|
|
||||||
endforeach(SHADER)
|
endforeach(SHADER)
|
||||||
# if compiling for visual studio, also use configure file for each project (specifically to set up working directory)
|
# if compiling for visual studio, also use configure file for each project (specifically to set up working directory)
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
|
|||||||
Reference in New Issue
Block a user