diff --git a/qrenderdoc/CMakeLists.txt b/qrenderdoc/CMakeLists.txt index c53c62b20..97fcd0f24 100644 --- a/qrenderdoc/CMakeLists.txt +++ b/qrenderdoc/CMakeLists.txt @@ -1,5 +1,3 @@ -set(output_dir ${CMAKE_BINARY_DIR}/bin) - get_git_hash(GIT_COMMIT_HASH) string(STRIP ${GIT_COMMIT_HASH} GIT_COMMIT_HASH) @@ -53,17 +51,39 @@ else() add_custom_command(OUTPUT RenderDoc.icns COMMAND touch RenderDoc.icns) endif() +# Output our configuration for qmake. We output this to a separate file so that +# the user can then open the qrenderdoc.pro in qt creator and be able to build +# with these configuration entries propagated for e.g. linking against libraries +# and finding dependencies from the cmake build +file(WRITE + ${CMAKE_BINARY_DIR}/qrenderdoc/qrenderdoc_cmake.pri + "CONFIG+=${QMAKE_CONFIG}\n" + "\n" + "QMAKE_CC=${CMAKE_C_COMPILER}\n" + "QMAKE_CXX=${CMAKE_CXX_COMPILER}\n" + "QMAKE_LINK=${CMAKE_CXX_COMPILER}\n" + "QMAKE_CXXFLAGS+=${warning_flags}\n" + "QMAKE_CXXFLAGS+=${QMAKE_CXXFLAGS}\n" + "QMAKE_LFLAGS+=${QMAKE_LDFLAGS}\n" + "\n" + # search for -lrenderdoc here + "LIBS+=-L${CMAKE_RUNTIME_OUTPUT_DIRECTORY}\n" + "DEFINES+=GIT_COMMIT_HASH_LITERAL=${GIT_COMMIT_HASH}\n" + "\n" + "RENDERDOC_VERSION=${RENDERDOC_VERSION}\n" + "\n" + "OSX_ICONFILE=${CMAKE_CURRENT_BINARY_DIR}/RenderDoc.icns\n") # The case here is deliberately not matching the executable name # This means the custom command doesn't create this output file, # which causes CMake to rerun this target every time so that Qt # can do dependency checking and rebuild anything necessary. add_custom_command(OUTPUT QRenderDoc - COMMAND qmake "CONFIG+=${QMAKE_CONFIG}" "QMAKE_CC=${CMAKE_C_COMPILER}" "QMAKE_CXX=${CMAKE_CXX_COMPILER}" "QMAKE_LINK=${CMAKE_CXX_COMPILER}" "QMAKE_CXXFLAGS+=${warning_flags}" "QMAKE_CXXFLAGS+=${QMAKE_CXXFLAGS}" "QMAKE_LFLAGS+=${QMAKE_LDFLAGS}" "DEFINES+=GIT_COMMIT_HASH_LITERAL=${GIT_COMMIT_HASH}" "RENDERDOC_VERSION=${RENDERDOC_VERSION}" "DESTDIR=${output_dir}" "OSX_ICONFILE=${CMAKE_CURRENT_BINARY_DIR}/RenderDoc.icns" ${CMAKE_CURRENT_SOURCE_DIR} + COMMAND qmake "CMAKE_DIR=${CMAKE_BINARY_DIR}" ${CMAKE_CURRENT_SOURCE_DIR} COMMAND $(MAKE) DEPENDS RenderDoc.icns) add_custom_target(build-qrenderdoc ALL DEPENDS QRenderDoc DEPENDS renderdoc) -install (PROGRAMS ${output_dir}/qrenderdoc DESTINATION bin) +install (PROGRAMS ${CMAKE_BINARY_DIR}/bin/qrenderdoc DESTINATION bin) # Install supporting files for file associations etc install (FILES share/application-x-renderdoc-capture.svg DESTINATION share/icons/hicolor/scalable/mimetypes/) diff --git a/qrenderdoc/qrenderdoc.pro b/qrenderdoc/qrenderdoc.pro index 30d94b6c5..cb533d231 100644 --- a/qrenderdoc/qrenderdoc.pro +++ b/qrenderdoc/qrenderdoc.pro @@ -68,10 +68,14 @@ win32 { DEFINES += RENDERDOC_PLATFORM_WIN32 } else { - isEmpty(DESTDIR) { - DESTDIR = $$_PRO_FILE_PWD_/../bin + isEmpty(CMAKE_DIR) { + error("When run from outside CMake, please set the Build Environment Variable CMAKE_DIR to point to your CMake build root. In Qt Creator add CMAKE_DIR=/path/to/renderdoc/build under 'Additional arguments' in the qmake Build Step. If running qmake directly, add CMAKE_DIR=/path/to/renderdoc/build/ to the command line.") } + DESTDIR=$$CMAKE_DIR/bin + + include($$CMAKE_DIR/qrenderdoc/qrenderdoc_cmake.pri) + # Temp files into .obj MOC_DIR = .obj UI_DIR = .obj @@ -79,7 +83,7 @@ win32 { OBJECTS_DIR = .obj # Link against the core library - LIBS += -L$$DESTDIR -lrenderdoc + LIBS += -lrenderdoc QMAKE_LFLAGS += '-Wl,-rpath,\'\$$ORIGIN\',-rpath,\'\$$ORIGIN/../lib\'' CONFIG += warn_off @@ -91,7 +95,7 @@ win32 { DEFINES += RENDERDOC_PLATFORM_POSIX RENDERDOC_PLATFORM_APPLE ICON = $$OSX_ICONFILE - INFO_PLIST_PATH = $$shell_quote($${DESTDIR}/$${TARGET}.app/Contents/Info.plist) + INFO_PLIST_PATH = $$shell_quote($$DESTDIR/$${TARGET}.app/Contents/Info.plist) QMAKE_POST_LINK += /usr/libexec/PlistBuddy -c \"Add :CFBundleShortVersionString string $${RENDERDOC_VERSION}.0\" -c \"Set :CFBundleIdentifier org.renderdoc.qrenderdoc\" $${INFO_PLIST_PATH} } else { QT += x11extras diff --git a/renderdoc/CMakeLists.txt b/renderdoc/CMakeLists.txt index 572870efd..c8d09b940 100644 --- a/renderdoc/CMakeLists.txt +++ b/renderdoc/CMakeLists.txt @@ -308,7 +308,3 @@ install (TARGETS renderdoc DESTINATION lib${LIB_SUFFIX}) # Copy in application API header to include install (FILES api/app/renderdoc_app.h DESTINATION include RENAME renderdoc.h) -add_custom_command(TARGET renderdoc POST_BUILD - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_SOURCE_DIR}/bin/) -add_custom_command(TARGET renderdoc POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_SOURCE_DIR}/bin/) diff --git a/renderdoccmd/CMakeLists.txt b/renderdoccmd/CMakeLists.txt index 3ed2aceab..2105a7b76 100644 --- a/renderdoccmd/CMakeLists.txt +++ b/renderdoccmd/CMakeLists.txt @@ -56,11 +56,6 @@ target_link_libraries(renderdoccmd ${libraries}) install (TARGETS renderdoccmd DESTINATION bin) -add_custom_command(TARGET renderdoccmd POST_BUILD - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_SOURCE_DIR}/bin/) -add_custom_command(TARGET renderdoccmd POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_SOURCE_DIR}/bin/) - if(ANDROID) set(APK_TARGET_ID "1" CACHE STRING "The Target ID to build the APK for, use to choose another one.")