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:
Joey de Vries
2018-03-03 00:36:38 +01:00
committed by GitHub

View File

@@ -175,23 +175,32 @@ 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}") 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}") elseif(APPLE)
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_RELEASE "${CMAKE_CURRENT_BINARY_DIR}/bin/${CHAPTER}") set_target_properties(${NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_BINARY_DIR}/bin/${CHAPTER}")
endif(WIN32) endif(WIN32)
# copy shader files to build directory # copy shader files to build directory
file(GLOB SHADERS file(GLOB SHADERS
"src/${CHAPTER}/${DEMO}/*.vs" "src/${CHAPTER}/${DEMO}/*.vs"
@@ -200,18 +209,21 @@ foreach(CHAPTER ${CHAPTERS})
"src/${CHAPTER}/${DEMO}/*.gs" "src/${CHAPTER}/${DEMO}/*.gs"
) )
foreach(SHADER ${SHADERS}) foreach(SHADER ${SHADERS})
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})
endif(WIN32) 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)
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)
configure_file(${CMAKE_SOURCE_DIR}/configuration/visualstudio.vcxproj.user.in ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.vcxproj.user @ONLY) configure_file(${CMAKE_SOURCE_DIR}/configuration/visualstudio.vcxproj.user.in ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.vcxproj.user @ONLY)
endif(MSVC) endif(MSVC)
endforeach(DEMO) endforeach(DEMO)
endforeach(CHAPTER) endforeach(CHAPTER)