build: move build related tasks for Windows from setup script to CMake
This commit is contained in:
@@ -181,6 +181,70 @@ if(Qt5Widgets_FOUND)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
# Setup ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if (WIN32)
|
||||||
|
get_filename_component(QT_BINARY_DIR "${QT_MOC_EXECUTABLE}" PATH)
|
||||||
|
set(QT_PLUGINS_DIR "${QT_BINARY_DIR}/../plugins")
|
||||||
|
|
||||||
|
function(COPY_QT_BINARIES IS_DEBUG IS_APP)
|
||||||
|
set(SUFFIX "")
|
||||||
|
if (IS_DEBUG)
|
||||||
|
set(SUFFIX "d")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CONFIGURATION "Release")
|
||||||
|
if (IS_DEBUG)
|
||||||
|
set(CONFIGURATION "Debug")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_CL_64)
|
||||||
|
set(BITS "64")
|
||||||
|
else()
|
||||||
|
set(BITS "32")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(TARGET "test")
|
||||||
|
if (IS_APP)
|
||||||
|
set(TARGET "app")
|
||||||
|
|
||||||
|
file(GLOB MY_PUBLIC_HEADERS
|
||||||
|
"${CMAKE_SOURCE_DIR}/setup/dynamic_libraries/win${BITS}/app/${CONFIGURATION}/*"
|
||||||
|
)
|
||||||
|
file(COPY ${MY_PUBLIC_HEADERS} DESTINATION "${CMAKE_BINARY_DIR}/${CONFIGURATION}/${TARGET}/")
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
configure_file("${QT_BINARY_DIR}/Qt5Core${SUFFIX}.dll" "${CMAKE_BINARY_DIR}/${CONFIGURATION}/${TARGET}/Qt5Core${SUFFIX}.dll" COPYONLY)
|
||||||
|
configure_file("${QT_BINARY_DIR}/Qt5Gui${SUFFIX}.dll" "${CMAKE_BINARY_DIR}/${CONFIGURATION}/${TARGET}/Qt5Gui${SUFFIX}.dll" COPYONLY)
|
||||||
|
configure_file("${QT_BINARY_DIR}/Qt5Network${SUFFIX}.dll" "${CMAKE_BINARY_DIR}/${CONFIGURATION}/${TARGET}/Qt5Network${SUFFIX}.dll" COPYONLY)
|
||||||
|
configure_file("${QT_BINARY_DIR}/Qt5Svg${SUFFIX}.dll" "${CMAKE_BINARY_DIR}/${CONFIGURATION}/${TARGET}/Qt5Svg${SUFFIX}.dll" COPYONLY)
|
||||||
|
configure_file("${QT_BINARY_DIR}/Qt5Widgets${SUFFIX}.dll" "${CMAKE_BINARY_DIR}/${CONFIGURATION}/${TARGET}/Qt5Widgets${SUFFIX}.dll" COPYONLY)
|
||||||
|
configure_file("${QT_BINARY_DIR}/Qt5WinExtras${SUFFIX}.dll" "${CMAKE_BINARY_DIR}/${CONFIGURATION}/${TARGET}/Qt5WinExtras${SUFFIX}.dll" COPYONLY)
|
||||||
|
|
||||||
|
configure_file("${QT_PLUGINS_DIR}/platforms/qwindows${SUFFIX}.dll" "${CMAKE_BINARY_DIR}/${CONFIGURATION}/${TARGET}/platforms/qwindows${SUFFIX}.dll" COPYONLY)
|
||||||
|
|
||||||
|
configure_file("${QT_PLUGINS_DIR}/imageformats/qgif${SUFFIX}.dll" "${CMAKE_BINARY_DIR}/${CONFIGURATION}/${TARGET}/imageformats/qgif${SUFFIX}.dll" COPYONLY)
|
||||||
|
configure_file("${QT_PLUGINS_DIR}/imageformats/qicns${SUFFIX}.dll" "${CMAKE_BINARY_DIR}/${CONFIGURATION}/${TARGET}/imageformats/qicns${SUFFIX}.dll" COPYONLY)
|
||||||
|
configure_file("${QT_PLUGINS_DIR}/imageformats/qico${SUFFIX}.dll" "${CMAKE_BINARY_DIR}/${CONFIGURATION}/${TARGET}/imageformats/qico${SUFFIX}.dll" COPYONLY)
|
||||||
|
configure_file("${QT_PLUGINS_DIR}/imageformats/qjpeg${SUFFIX}.dll" "${CMAKE_BINARY_DIR}/${CONFIGURATION}/${TARGET}/imageformats/qjpeg${SUFFIX}.dll" COPYONLY)
|
||||||
|
configure_file("${QT_PLUGINS_DIR}/imageformats/qsvg${SUFFIX}.dll" "${CMAKE_BINARY_DIR}/${CONFIGURATION}/${TARGET}/imageformats/qsvg${SUFFIX}.dll" COPYONLY)
|
||||||
|
configure_file("${QT_PLUGINS_DIR}/imageformats/qtga${SUFFIX}.dll" "${CMAKE_BINARY_DIR}/${CONFIGURATION}/${TARGET}/imageformats/qtga${SUFFIX}.dll" COPYONLY)
|
||||||
|
configure_file("${QT_PLUGINS_DIR}/imageformats/qtiff${SUFFIX}.dll" "${CMAKE_BINARY_DIR}/${CONFIGURATION}/${TARGET}/imageformats/qtiff${SUFFIX}.dll" COPYONLY)
|
||||||
|
configure_file("${QT_PLUGINS_DIR}/imageformats/qwbmp${SUFFIX}.dll" "${CMAKE_BINARY_DIR}/${CONFIGURATION}/${TARGET}/imageformats/qwbmp${SUFFIX}.dll" COPYONLY)
|
||||||
|
configure_file("${QT_PLUGINS_DIR}/imageformats/qwebp${SUFFIX}.dll" "${CMAKE_BINARY_DIR}/${CONFIGURATION}/${TARGET}/imageformats/qwebp${SUFFIX}.dll" COPYONLY)
|
||||||
|
endfunction(COPY_QT_BINARIES)
|
||||||
|
|
||||||
|
COPY_QT_BINARIES(True True)
|
||||||
|
COPY_QT_BINARIES(True False)
|
||||||
|
COPY_QT_BINARIES(False True)
|
||||||
|
COPY_QT_BINARIES(False False)
|
||||||
|
|
||||||
|
configure_file("${CMAKE_SOURCE_DIR}/setup/icon/windows/sourcetrail.ico" "${CMAKE_BINARY_DIR}/${CONFIGURATION}/sourcetrail.ico" COPYONLY)
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
add_subdirectory(src/app)
|
add_subdirectory(src/app)
|
||||||
add_subdirectory(src/external)
|
add_subdirectory(src/external)
|
||||||
add_subdirectory(src/indexer)
|
add_subdirectory(src/indexer)
|
||||||
@@ -352,6 +416,15 @@ set_property(
|
|||||||
|
|
||||||
target_link_libraries(${LIB_PYTHON_PROJECT_NAME} ${LIB_UTILITY_PROJECT_NAME} ${LIB_PROJECT_NAME})
|
target_link_libraries(${LIB_PYTHON_PROJECT_NAME} ${LIB_UTILITY_PROJECT_NAME} ${LIB_PROJECT_NAME})
|
||||||
|
|
||||||
|
if (WIN32)
|
||||||
|
add_custom_command(
|
||||||
|
TARGET ${LIB_PYTHON_PROJECT_NAME}
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND ${PROJECT_SOURCE_DIR}/script/download_python_indexer.sh
|
||||||
|
COMMENT "download python indexer"
|
||||||
|
)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
|
||||||
# Lib Gui ----------------------------------------------------------------------
|
# Lib Gui ----------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -514,6 +587,19 @@ if (WIN32)
|
|||||||
|
|
||||||
# generate pdb for release build
|
# generate pdb for release build
|
||||||
set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")
|
set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")
|
||||||
|
|
||||||
|
string(REGEX REPLACE "/" "\\\\" BACKSLASHED_CMAKE_BINARY_DIR ${CMAKE_BINARY_DIR})
|
||||||
|
string(REGEX REPLACE "/" "\\\\" BACKSLASHED_CMAKE_SOURCE_DIR ${CMAKE_SOURCE_DIR})
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
TARGET ${APP_PROJECT_NAME}
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND rmdir "${BACKSLASHED_CMAKE_BINARY_DIR}\\Debug\\app\\data" & mklink /d /j "${BACKSLASHED_CMAKE_BINARY_DIR}\\Debug\\app\\data" "${BACKSLASHED_CMAKE_SOURCE_DIR}\\bin\\app\\data"
|
||||||
|
COMMAND rmdir "${BACKSLASHED_CMAKE_BINARY_DIR}\\Debug\\app\\user" & mklink /d /j "${BACKSLASHED_CMAKE_BINARY_DIR}\\Debug\\app\\user" "${BACKSLASHED_CMAKE_SOURCE_DIR}\\bin\\app\\user"
|
||||||
|
COMMAND rmdir "${BACKSLASHED_CMAKE_BINARY_DIR}\\Release\\app\\data" & mklink /d /j "${BACKSLASHED_CMAKE_BINARY_DIR}\\Release\\app\\data" "${BACKSLASHED_CMAKE_SOURCE_DIR}\\bin\\app\\data"
|
||||||
|
COMMAND rmdir "${BACKSLASHED_CMAKE_BINARY_DIR}\\Release\\app\\user" & mklink /d /j "${BACKSLASHED_CMAKE_BINARY_DIR}\\Release\\app\\user" "${BACKSLASHED_CMAKE_SOURCE_DIR}\\bin\\app\\user"
|
||||||
|
COMMENT "create symbolic links for data"
|
||||||
|
)
|
||||||
else ()
|
else ()
|
||||||
add_executable(${APP_PROJECT_NAME} ${APP_FILES})
|
add_executable(${APP_PROJECT_NAME} ${APP_FILES})
|
||||||
endif ()
|
endif ()
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||
* QT 5.10.1
|
* QT 5.10.1
|
||||||
* Clang & LLVM 7.0 (doesn't quite work for windows, use unix setup below and skip all the ninja stuff)(installation guide http://clang.llvm.org/docs/LibASTMatchersTutorial.html)
|
* Clang & LLVM 7.0 (doesn't quite work for windows, use unix setup below and skip all the ninja stuff)(installation guide http://clang.llvm.org/docs/LibASTMatchersTutorial.html)
|
||||||
* Boost 1.68
|
* Boost 1.68
|
||||||
* Image Magick 7.0.6
|
|
||||||
* ccache (Unix)
|
* ccache (Unix)
|
||||||
* Visual Leak Detector (Windows)
|
* Visual Leak Detector (Windows)
|
||||||
* Wix 3.11 (Windows)
|
* Wix 3.11 (Windows)
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
MY_PATH=`dirname "$0"`
|
|
||||||
|
|
||||||
ICON_INPUT_PATH=$MY_PATH/../bin/app/data/gui/icon
|
|
||||||
ICON_BUILD_PATH=$ICON_INPUT_PATH/build
|
|
||||||
|
|
||||||
mkdir -p $ICON_BUILD_PATH
|
|
||||||
|
|
||||||
magick convert $ICON_INPUT_PATH/logo_1024_1024.png -define icon:auto-resize=256,128,64,48,40,32,24,16 $ICON_BUILD_PATH/sourcetrail.ico
|
|
||||||
|
|
||||||
cp $ICON_BUILD_PATH/sourcetrail.ico $MY_PATH/../build/win32
|
|
||||||
cp $ICON_BUILD_PATH/sourcetrail.ico $MY_PATH/../build/win64
|
|
||||||
|
|
||||||
rm -rf $ICON_BUILD_PATH
|
|
||||||
@@ -42,60 +42,6 @@ fi
|
|||||||
# Create Debug and Release folders
|
# Create Debug and Release folders
|
||||||
echo -e $INFO "create build folders"
|
echo -e $INFO "create build folders"
|
||||||
if [ $PLATFORM == "Windows" ]; then
|
if [ $PLATFORM == "Windows" ]; then
|
||||||
|
|
||||||
copy_dynamic_libraries() # Parameters: bit {32, 64}, mode {Debug, Release}, target {app, test}
|
|
||||||
{
|
|
||||||
mkdir -p build/win$1/$2/$3/platforms
|
|
||||||
mkdir -p build/win$1/$2/$3/styles
|
|
||||||
mkdir -p build/win$1/$2/$3/imageformats
|
|
||||||
|
|
||||||
local QT_DIR=${QT_WIN32_DIR}
|
|
||||||
|
|
||||||
if [[ "$1" == "64" ]]
|
|
||||||
then
|
|
||||||
QT_DIR=${QT_WIN64_DIR}
|
|
||||||
fi
|
|
||||||
|
|
||||||
local SUFFIX=""
|
|
||||||
if [[ "$2" == "Debug" ]]
|
|
||||||
then
|
|
||||||
SUFFIX="d"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e $INFO "copy dynamic libraries for Win$1 $2 $3"
|
|
||||||
|
|
||||||
if [[ "$3" == "app" ]]
|
|
||||||
then
|
|
||||||
cp -u -r setup/dynamic_libraries/win$1/$3/$2/* build/win$1/$2/$3
|
|
||||||
fi
|
|
||||||
|
|
||||||
cp -u -r ${QT_DIR}/bin/Qt5Core$SUFFIX.dll build/win$1/$2/$3
|
|
||||||
cp -u -r ${QT_DIR}/bin/Qt5Gui$SUFFIX.dll build/win$1/$2/$3
|
|
||||||
cp -u -r ${QT_DIR}/bin/Qt5Network$SUFFIX.dll build/win$1/$2/$3
|
|
||||||
cp -u -r ${QT_DIR}/bin/Qt5Svg$SUFFIX.dll build/win$1/$2/$3
|
|
||||||
cp -u -r ${QT_DIR}/bin/Qt5Widgets$SUFFIX.dll build/win$1/$2/$3
|
|
||||||
cp -u -r ${QT_DIR}/bin/Qt5WinExtras$SUFFIX.dll build/win$1/$2/$3
|
|
||||||
cp -u -r ${QT_DIR}/plugins/platforms/qwindows$SUFFIX.dll build/win$1/$2/$3/platforms
|
|
||||||
cp -u -r ${QT_DIR}/plugins/styles/qwindowsvistastyle$SUFFIX.dll build/win$1/$2/$3/styles
|
|
||||||
cp -u -r ${QT_DIR}/plugins/imageformats/qgif$SUFFIX.dll build/win$1/$2/$3/imageformats
|
|
||||||
cp -u -r ${QT_DIR}/plugins/imageformats/qicns$SUFFIX.dll build/win$1/$2/$3/imageformats
|
|
||||||
cp -u -r ${QT_DIR}/plugins/imageformats/qico$SUFFIX.dll build/win$1/$2/$3/imageformats
|
|
||||||
cp -u -r ${QT_DIR}/plugins/imageformats/qjpeg$SUFFIX.dll build/win$1/$2/$3/imageformats
|
|
||||||
cp -u -r ${QT_DIR}/plugins/imageformats/qsvg$SUFFIX.dll build/win$1/$2/$3/imageformats
|
|
||||||
cp -u -r ${QT_DIR}/plugins/imageformats/qtga$SUFFIX.dll build/win$1/$2/$3/imageformats
|
|
||||||
cp -u -r ${QT_DIR}/plugins/imageformats/qtiff$SUFFIX.dll build/win$1/$2/$3/imageformats
|
|
||||||
cp -u -r ${QT_DIR}/plugins/imageformats/qwbmp$SUFFIX.dll build/win$1/$2/$3/imageformats
|
|
||||||
cp -u -r ${QT_DIR}/plugins/imageformats/qwebp$SUFFIX.dll build/win$1/$2/$3/imageformats
|
|
||||||
}
|
|
||||||
|
|
||||||
copy_dynamic_libraries "32" "Debug" "app"
|
|
||||||
copy_dynamic_libraries "32" "Debug" "test"
|
|
||||||
copy_dynamic_libraries "32" "Release" "app"
|
|
||||||
copy_dynamic_libraries "32" "Release" "test"
|
|
||||||
copy_dynamic_libraries "64" "Debug" "app"
|
|
||||||
copy_dynamic_libraries "64" "Debug" "test"
|
|
||||||
copy_dynamic_libraries "64" "Release" "app"
|
|
||||||
copy_dynamic_libraries "64" "Release" "test"
|
|
||||||
else
|
else
|
||||||
mkdir -p build/Debug/app
|
mkdir -p build/Debug/app
|
||||||
mkdir -p build/Debug/test
|
mkdir -p build/Debug/test
|
||||||
@@ -104,31 +50,11 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $PLATFORM == "Windows" ]; then
|
if [ $PLATFORM == "Windows" ]; then
|
||||||
sh script/download_python_indexer.sh
|
|
||||||
else
|
else
|
||||||
MY_PATH=`dirname "$0"`
|
MY_PATH=`dirname "$0"`
|
||||||
$MY_PATH/download_python_indexer.sh
|
$MY_PATH/download_python_indexer.sh
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $PLATFORM == "Windows" ]; then
|
|
||||||
echo -e $INFO "creating program icon"
|
|
||||||
sh script/create_windows_icon.sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
echo -e $INFO "create symbolic links for data"
|
|
||||||
if [ $PLATFORM == "Windows" ]; then
|
|
||||||
BACKSLASHED_ROOT_DIR="${ROOT_DIR//\//\\}"
|
|
||||||
cmd //c 'mklink /d /j '$BACKSLASHED_ROOT_DIR'\build\win32\Debug\app\data '$BACKSLASHED_ROOT_DIR'\bin\app\data' &
|
|
||||||
cmd //c 'mklink /d /j '$BACKSLASHED_ROOT_DIR'\build\win32\Debug\app\user '$BACKSLASHED_ROOT_DIR'\bin\app\user' &
|
|
||||||
cmd //c 'mklink /d /j '$BACKSLASHED_ROOT_DIR'\build\win32\Release\app\data '$BACKSLASHED_ROOT_DIR'\bin\app\data' &
|
|
||||||
cmd //c 'mklink /d /j '$BACKSLASHED_ROOT_DIR'\build\win32\Release\app\user '$BACKSLASHED_ROOT_DIR'\bin\app\user' &
|
|
||||||
|
|
||||||
cmd //c 'mklink /d /j '$BACKSLASHED_ROOT_DIR'\build\win64\Debug\app\data '$BACKSLASHED_ROOT_DIR'\bin\app\data' &
|
|
||||||
cmd //c 'mklink /d /j '$BACKSLASHED_ROOT_DIR'\build\win64\Debug\app\user '$BACKSLASHED_ROOT_DIR'\bin\app\user' &
|
|
||||||
cmd //c 'mklink /d /j '$BACKSLASHED_ROOT_DIR'\build\win64\Release\app\data '$BACKSLASHED_ROOT_DIR'\bin\app\data' &
|
|
||||||
cmd //c 'mklink /d /j '$BACKSLASHED_ROOT_DIR'\build\win64\Release\app\user '$BACKSLASHED_ROOT_DIR'\bin\app\user' &
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Setup both Debug and Release configuration
|
# Setup both Debug and Release configuration
|
||||||
if [ $PLATFORM == "Linux" ] || [ $PLATFORM == "MacOS" ]; then
|
if [ $PLATFORM == "Linux" ] || [ $PLATFORM == "MacOS" ]; then
|
||||||
@@ -140,14 +66,6 @@ if [ $PLATFORM == "Linux" ] || [ $PLATFORM == "MacOS" ]; then
|
|||||||
|
|
||||||
echo -e $INFO "run cmake with Release configuration"
|
echo -e $INFO "run cmake with Release configuration"
|
||||||
cd ../Release && cmake -G Ninja -DCMAKE_BUILD_TYPE="Release" ../..
|
cd ../Release && cmake -G Ninja -DCMAKE_BUILD_TYPE="Release" ../..
|
||||||
else
|
|
||||||
echo -e $INFO "run cmake with 32 bit configuration"
|
|
||||||
|
|
||||||
cd build/win32
|
|
||||||
cmake -G "Visual Studio 14 2015" ../..
|
|
||||||
|
|
||||||
cd ../win64
|
|
||||||
cmake -G "Visual Studio 14 2015 Win64" ../..
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -e $SUCCESS "setup complete"
|
echo -e $SUCCESS "setup complete"
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 128 KiB |
Reference in New Issue
Block a user