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()
|
||||
|
||||
|
||||
# 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/external)
|
||||
add_subdirectory(src/indexer)
|
||||
@@ -352,6 +416,15 @@ set_property(
|
||||
|
||||
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 ----------------------------------------------------------------------
|
||||
|
||||
@@ -514,6 +587,19 @@ if (WIN32)
|
||||
|
||||
# generate pdb for release build
|
||||
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 ()
|
||||
add_executable(${APP_PROJECT_NAME} ${APP_FILES})
|
||||
endif ()
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
* 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)
|
||||
* Boost 1.68
|
||||
* Image Magick 7.0.6
|
||||
* ccache (Unix)
|
||||
* Visual Leak Detector (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
|
||||
echo -e $INFO "create build folders"
|
||||
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
|
||||
mkdir -p build/Debug/app
|
||||
mkdir -p build/Debug/test
|
||||
@@ -104,31 +50,11 @@ else
|
||||
fi
|
||||
|
||||
if [ $PLATFORM == "Windows" ]; then
|
||||
sh script/download_python_indexer.sh
|
||||
else
|
||||
MY_PATH=`dirname "$0"`
|
||||
$MY_PATH/download_python_indexer.sh
|
||||
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
|
||||
if [ $PLATFORM == "Linux" ] || [ $PLATFORM == "MacOS" ]; then
|
||||
@@ -140,14 +66,6 @@ if [ $PLATFORM == "Linux" ] || [ $PLATFORM == "MacOS" ]; then
|
||||
|
||||
echo -e $INFO "run cmake with Release configuration"
|
||||
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
|
||||
|
||||
echo -e $SUCCESS "setup complete"
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 128 KiB |
Reference in New Issue
Block a user