diff --git a/thirdparty/lzo/driver/CMakeLists.txt b/thirdparty/lzo/driver/CMakeLists.txt
index f83d573..122a223 100644
--- a/thirdparty/lzo/driver/CMakeLists.txt
+++ b/thirdparty/lzo/driver/CMakeLists.txt
@@ -1,24 +1,24 @@
 project(lzotools)
 
-if (WIN32)
+if(MSVC)
 	# use pre-built 2.03
 	get_filename_component(LZO_PATH ${SDKROOT}/lzo/2.03 ABSOLUTE)
 	link_directories(${LZO_PATH}/LZO_lib/)
 	if (CMAKE_SIZEOF_VOID_P EQUAL 8) 
 		set(PREFIX _64)
 	endif (CMAKE_SIZEOF_VOID_P EQUAL 8)
-else ()
+else()
     set(LZO_PATH ${LZO_INCLUDE_DIR})
-endif ()
+endif()
 
 include_directories(${LZO_PATH} ${LZO_PATH}/include)
 add_definitions(-DLZO_USE_ASM)
 add_executable(lzocompress  lzocompress.c)
 add_executable(lzodecompress lzodecompress.c)
-if (WIN32)
+if(MSVC)
 	target_link_libraries(lzocompress lzo2${PREFIX} ${LZO_LIBRARY})
 	target_link_libraries(lzodecompress lzo2${PREFIX} ${LZO_LIBRARY})
-else ()
+else()
 	target_link_libraries(lzocompress ${LZO_LIBRARY})
 	target_link_libraries(lzodecompress ${LZO_LIBRARY})
 endif()
diff --git a/toonz/sources/CMakeLists.txt b/toonz/sources/CMakeLists.txt
index ee224da..71679b5 100644
--- a/toonz/sources/CMakeLists.txt
+++ b/toonz/sources/CMakeLists.txt
@@ -11,6 +11,55 @@ project(OpenToonz)
 # list of var-names
 set(_init_vars)
 
+#-----------------------------------------------------------------------------
+# Select build target
+set(BUILD_TARGET_WIN       OFF)
+set(BUILD_TARGET_APPLE     OFF)
+set(BUILD_TARGET_UNIX      OFF)
+if(WIN32)
+    set(BUILD_TARGET_WIN    ON)
+    message(STATUS "Target system is WIN")
+elseif(APPLE)
+    set(BUILD_TARGET_APPLE  ON)
+    message(STATUS "Target system is APPLE")
+elseif(UNIX)
+    set(BUILD_TARGET_UNIX   ON)
+    message(STATUS "Target system is UNIX")
+else()
+    set(BUILD_TARGET_UNIX   ON)
+    message(WARNING "Target system unknown, set UNIX by default")
+    message(STATUS "Target system is UNIX (actually unknown)")
+endif()
+
+#-----------------------------------------------------------------------------
+# Select build environment
+
+set(BUILD_ENV_MSVC     OFF)
+set(BUILD_ENV_APPLE    OFF)
+set(BUILD_ENV_UNIXLIKE OFF)
+if(MSVC)
+    set(BUILD_ENV_MSVC ON)
+    if(NOT BUILD_TARGET_WIN)
+        message(WARNING "Build environment is MSVC, but target system is not WIN")
+    endif()
+    message(STATUS "Build environment is MSVC")
+elseif(CMAKE_HOST_APPLE)
+    set(BUILD_ENV_APPLE ON)
+    if(NOT BUILD_TARGET_APPLE)
+        message(WARNING "Build environment is APPLE, but target system is not APPLE")
+    endif()
+    message(STATUS "Build environment is APPLE")
+elseif(CMAKE_HOST_UNIX OR CMAKE_COMPILER_IS_GNUCC)
+    set(BUILD_ENV_UNIXLIKE ON)
+    if(NOT BUILD_TARGET_UNIX AND NOT BUILD_TARGET_WIN)
+        message(WARNING "Build environment is UNIXLIKE, but target system is not UNIX or WIN")
+    endif()
+    message(STATUS "Build environment is UNIXLIKE")
+else()
+    message(ERROR "Unsupported build environment, only MSVC, APPLE and UNIXLIKE are supported")
+endif()
+
+
 # initialize to ON
 macro(option_defaults_init)
     foreach(_var ${ARGV})
@@ -35,13 +84,13 @@ option_defaults_init(
 )
 
 # customize...
-if(WIN32)
+if(BUILD_ENV_MSVC)
     set(_init_SYSTEM_LZO                     OFF)
     set(_init_SYSTEM_SUPERLU                 OFF)
-elseif(APPLE)
+elseif(BUILD_ENV_APPLE)
     set(_init_SYSTEM_LZO                     OFF)
     set(_init_SYSTEM_SUPERLU                 OFF)
-elseif(UNIX)
+elseif(BUILD_ENV_UNIXLIKE)
     set(_init_SYSTEM_LZO                     ON)
     set(_init_SYSTEM_SUPERLU                 ON)
 endif()
@@ -67,17 +116,15 @@ include(${CMAKE_SOURCE_DIR}/../cmake/util_compiler.cmake)
 get_filename_component(SDKROOT ../../thirdparty/ ABSOLUTE)
 message(STATUS "SDK Root:" ${SDKROOT})
 list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake")
-if(APPLE)
+if(BUILD_ENV_APPLE)
     set(THIRDPARTY_LIBS_HINTS "/usr/local/Cellar/" "/opt/include" ${SDKROOT})
-elseif(WIN32 OR UNIX)
+elseif(BUILD_ENV_MSVC OR BUILD_ENV_UNIXLIKE)
     set(THIRDPARTY_LIBS_HINTS ${SDKROOT})
 endif()
 
 message(STATUS "Thirdpary Library Search path:" ${THIRDPARTY_LIBS_HINTS})
 
-if(WIN32)
-    message(STATUS "Windows System")
-
+if(BUILD_ENV_MSVC)
     if(MSVC_VERSION GREATER 1800)
         if(CMAKE_SIZEOF_VOID_P EQUAL 4)
             set(QT_PATH "C:/Qt/5.6/msvc2015" CACHE PATH "Qt instlattion directory")
@@ -104,9 +151,7 @@ if(WIN32)
         -DNOMINMAX
         -D_USE_MATH_DEFINES
     )
-elseif(APPLE)
-    message(STATUS "Apple System")
-
+elseif(BUILD_ENV_APPLE)
     if(NOT PLATFORM)
         set(PLATFORM 64)
     endif()
@@ -139,9 +184,7 @@ elseif(APPLE)
     else()
         message(FATAL_ERROR "Invalid PLATFORM:" ${PLATFORM} ". 'PLATFORM' must be 32 or 64.")
     endif()
-elseif(UNIX)
-    message(STATUS "Unix System")
-
+elseif(BUILD_ENV_UNIXLIKE)
     # Needed for correct Qt detection
     cmake_minimum_required(VERSION 2.8.12)
 
@@ -152,7 +195,7 @@ elseif(UNIX)
     endif()
     if(CMAKE_SYSTEM_NAME MATCHES "Linux")
         add_definitions(-DLINUX)
-    else()
+    elseif(NOT BUILD_TARGET_WIN)
         message(WARNING "Support for generic Unix (Not Apple or Linux) isn't yet working!")
     endif()
 
@@ -161,8 +204,6 @@ elseif(UNIX)
     find_package(Qt5Widgets)
 
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -lstdc++ -std=c++11")
-else()
-    message(ERROR "Unknown System")
 endif()
 
 add_definitions(
@@ -175,7 +216,7 @@ add_definitions(
 # Find includes in corresponding build directories
 set(CMAKE_INCLUDE_CURRENT_DIR ON)
 
-if(APPLE)
+if(BUILD_ENV_APPLE)
     set(CMAKE_MACOSX_RPATH ON)
     set(CMAKE_SKIP_BUILD_RPATH FALSE)
     set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
@@ -213,7 +254,7 @@ if(Qt5Core_VERSION VERSION_LESS QT_MINIMUM_VERSION)
 endif()
 unset(QT_MINIMUM_VERSION)
 
-if(WIN32)
+if(BUILD_ENV_MSVC)
     include_directories(
         SYSTEM
         ${SDKROOT}/glut/3.7.6/include
@@ -234,7 +275,7 @@ macro(_find_toonz_library OUT_LIB_LIST IN_LIB_LIST)
     foreach(arg ${IN_LIB_LIST})
         unset(COREPATH CACHE)
         # find しても cmake が走るときにはできていないので完全なパス名を生成して返すだけ
-        if(APPLE)
+        if(BUILD_ENV_APPLE)
             set(LIBPATH ${CMAKE_CURRENT_BINARY_DIR}/../${arg}/lib${arg}${CMAKE_SHARED_LIBRARY_SUFFIX})
         else()
             set(LIBPATH ${arg})
@@ -247,7 +288,9 @@ endmacro()
 set(TNZSTDFX_Location)
 set(TFARM_Location)
 
-if(WIN32)
+set(QT_LIB)  # avoid warning
+
+if(BUILD_ENV_MSVC)
     if(CMAKE_SIZEOF_VOID_P EQUAL 4)
         set(PLATFORM 32)
         set(PLATFORM2)
@@ -286,7 +329,7 @@ if(WIN32)
     if(PLATFORM EQUAL 32)
         set(QT_LIB ${SDKROOT}/quicktime/QT73SDK/Libraries/QTMLClient.lib)
     endif()
-elseif(APPLE)
+elseif(BUILD_ENV_APPLE)
     find_library(GLUT_LIB GLUT)
     find_library(GL_LIB OpenGL)
     find_library(Z_LIB z)
@@ -333,10 +376,19 @@ elseif(APPLE)
     find_package(LZO REQUIRED)
     message("LZO:" ${LZO_INCLUDE_DIR})
 
-elseif(UNIX)
-    find_library(GL_LIB GL)
-    find_library(GLU_LIB GLU)
-    find_library(GLUT_LIB glut)
+elseif(BUILD_ENV_UNIXLIKE)
+    if(BUILD_TARGET_WIN)
+        if(PLATFORM EQUAL 32)
+            set(QT_LIB ${SDKROOT}/quicktime/QT73SDK/Libraries/QTMLClient.lib)
+        endif()
+        find_library(GL_LIB opengl32)
+        find_library(GLU_LIB glu32)
+        find_library(GLUT_LIB NAMES glut freeglut)
+    else()
+        find_library(GL_LIB GL)
+        find_library(GLU_LIB GLU)
+        find_library(GLUT_LIB glut)
+    endif()
     find_library(Z_LIB z)
 
     find_package(TIFF REQUIRED)
@@ -371,8 +423,6 @@ elseif(UNIX)
         add_definitions(-DLZ4_STATIC)
     endif()
 
-    pkg_check_modules(USB_LIB REQUIRED libusb-1.0)
-
     # TODO: check for them properly in some sane order with pkg-config
     find_library(OPENBLAS_LIB NAMES cblas gslcblas openblas blas)
     message("OpenBLAS:" ${OPENBLAS_LIB})
@@ -383,8 +433,11 @@ elseif(UNIX)
     find_package(LZO REQUIRED)
     message("LZO:" ${LZO_INCLUDE_DIR})
 
-    pkg_check_modules(FREETYPE REQUIRED freetype2)
-    pkg_check_modules(SDL_LIB REQUIRED sdl2)
+    if(NOT BUILD_TARGET_WIN)
+        pkg_check_modules(USB_LIB REQUIRED libusb-1.0)
+        pkg_check_modules(FREETYPE REQUIRED freetype2)
+        pkg_check_modules(SDL_LIB REQUIRED sdl2)
+    endif()
 endif()
 
 
@@ -419,7 +472,7 @@ include_directories(
     ${PNG_INCLUDE_DIRS}
 )
 
-if(WIN32 OR APPLE)
+if(BUILD_ENV_MSVC OR BUILD_ENV_APPLE)
     find_path(
         BOOST_ROOT
             include/boost
@@ -450,17 +503,17 @@ include_directories(
     ${JPEG_INCLUDE_DIR}
 )
 
-if(WIN32 AND PLATFORM EQUAL 64)
+if(BUILD_TARGET_WIN AND PLATFORM EQUAL 64)
     add_definitions(-Dx64)
 endif()
 
-if(WIN32)
+if(BUILD_ENV_MSVC)
     # place Toonz.exe and dlls in the same directory
     set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
-elseif(APPLE)
+elseif(BUILD_ENV_APPLE)
     # pass
-elseif(UNIX)
+elseif(BUILD_ENV_UNIXLIKE)
     set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
 
     # Mirror relative bin/lib location for installation
@@ -474,7 +527,7 @@ elseif(UNIX)
     endif()
 endif()
 
-if(MSVC AND MSVC_VERSION EQUAL 1800)
+if(BUILD_ENV_MSVC AND MSVC_VERSION EQUAL 1800)
     # Visual C++ 2013 cannot handle UTF-8 without BOM
     # Non-ascii characters in comments would not be a problem
     add_compile_options("/wd4819")
@@ -524,15 +577,15 @@ add_subdirectory(tcomposer)
 add_subdirectory(tconverter)
 add_subdirectory(toonzfarm)
 
-if(APPLE)
+if(BUILD_ENV_APPLE)
     add_subdirectory(mousedragfilter)
 endif()
 
-if((PLATFORM EQUAL 32) AND (WIN32 OR APPLE))
+if((PLATFORM EQUAL 32) AND (BUILD_TARGET_WIN OR BUILD_TARGET_APPLE))
     add_subdirectory(t32bitsrv)
 endif()
 
-if(APPLE)
+if(BUILD_ENV_APPLE)
     add_custom_command(TARGET executable
         POST_BUILD COMMAND
         ${CMAKE_INSTALL_NAME_TOOL} -add_rpath ${CMAKE_INSTALL_RPATH}
diff --git a/toonz/sources/colorfx/CMakeLists.txt b/toonz/sources/colorfx/CMakeLists.txt
index 1ce0525..6029b6a 100644
--- a/toonz/sources/colorfx/CMakeLists.txt
+++ b/toonz/sources/colorfx/CMakeLists.txt
@@ -25,7 +25,7 @@ add_definitions(
     -DUSE_MESA
 )
 
-if(APPLE)
+if(BUILD_ENV_APPLE)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libcolorfx.dylib")
 endif()
 
diff --git a/toonz/sources/image/CMakeLists.txt b/toonz/sources/image/CMakeLists.txt
index 514ba0c..271131b 100644
--- a/toonz/sources/image/CMakeLists.txt
+++ b/toonz/sources/image/CMakeLists.txt
@@ -60,7 +60,7 @@ set(SOURCES
     mesh/tiio_mesh.cpp
 )
 
-if(WIN32)
+if(BUILD_TARGET_WIN)
     set(HEADERS ${HEADERS}
         avi/tiio_avi.h
         mov/tiio_mov.h
@@ -71,7 +71,7 @@ if(WIN32)
         mov/tiio_movW.cpp
         3gp/tiio_3gpW.cpp
     )
-elseif(APPLE)
+elseif(BUILD_TARGET_APPLE)
     set(HEADERS ${HEADERS}
         mov/tiio_movM.h
         3gp/tiio_3gpM.h
@@ -80,7 +80,7 @@ elseif(APPLE)
         mov/tiio_movM.cpp
         3gp/tiio_3gpM.cpp
     )
-elseif(UNIX)
+elseif(BUILD_TARGET_UNIX)
     set(HEADERS ${HEADERS}
         3gp/tiio_3gp_proxy.h
         mov/tiio_mov_proxy.h
@@ -98,7 +98,7 @@ add_definitions(
     -DIMAGE_EXPORTS
 )
 
-if(APPLE)
+if(BUILD_ENV_APPLE)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libimage.dylib")
 endif()
 
@@ -111,29 +111,29 @@ include_directories(
     ${SDKROOT}/LibJPEG/jpeg-9
 )
 
-if(WIN32)
+if(BUILD_ENV_MSVC)
     include_directories(
         SYSTEM
         ${SDKROOT}/libpng-1.6.21
     )
-    if(PLATFORM EQUAL 32)
-        include_directories(
-            SYSTEM
-            ${SDKROOT}/quicktime/QT73SDK/CIncludes
-        )
-    endif()
+endif()
+if(BUILD_TARGET_WIN AND PLATFORM EQUAL 32)
+    include_directories(
+        SYSTEM
+        ${SDKROOT}/quicktime/QT73SDK/CIncludes
+    )
 endif()
 
 
 _find_toonz_library(TNZLIBS "tnzcore;tnzbase;toonzlib")
 
 
-if(WIN32)
+if(BUILD_ENV_MSVC)
     set(EXTRA_LIBS
         ${TNZLIBS}
         vfw32.lib
     )
-elseif(APPLE)
+elseif(BUILD_ENV_APPLE)
     if(PLATFORM EQUAL 32)
         find_library(CORE_SERVICES_LIB CoreServices)
         set(OSX_10_6_SDK_PATH "")
@@ -153,11 +153,15 @@ elseif(APPLE)
         ${CORE_SERVICES_LIB}
         ${QD_LIB}
     )
-else()
+elseif(BUILD_ENV_UNIXLIKE)
     # Generic Unix
     set(EXTRA_LIBS
         ${TNZLIBS}
     )
+
+    if(BUILD_TARGET_WIN)
+        set(EXTRA_LIBS ${EXTRA_LIBS} -lvfw32)
+    endif()
 endif()
 
 target_link_libraries(image Qt5::Core Qt5::Gui Qt5::Network ${Z_LIB} ${GLUT_LIB} ${GL_LIB} ${JPEG_LIB} ${TIFF_LIB} ${PNG_LIB} ${EXTRA_LIBS})
diff --git a/toonz/sources/mousedragfilter/CMakeLists.txt b/toonz/sources/mousedragfilter/CMakeLists.txt
index 5158770..5eeb0fd 100644
--- a/toonz/sources/mousedragfilter/CMakeLists.txt
+++ b/toonz/sources/mousedragfilter/CMakeLists.txt
@@ -1,4 +1,4 @@
-if(APPLE)
+if(BUILD_ENV_APPLE)
     cmake_minimum_required(VERSION 2.8.11)
     project(MouseDragFilter)
 
diff --git a/toonz/sources/sound/CMakeLists.txt b/toonz/sources/sound/CMakeLists.txt
index 6b0e7d2..f3caaec 100644
--- a/toonz/sources/sound/CMakeLists.txt
+++ b/toonz/sources/sound/CMakeLists.txt
@@ -21,7 +21,7 @@ add_definitions(
     -DSOUND_EXPORTS
 )
 
-if(APPLE)
+if(BUILD_ENV_APPLE)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libsound.dylib")
 endif()
 
diff --git a/toonz/sources/stdfx/CMakeLists.txt b/toonz/sources/stdfx/CMakeLists.txt
index aafbce2..d2b8fab 100644
--- a/toonz/sources/stdfx/CMakeLists.txt
+++ b/toonz/sources/stdfx/CMakeLists.txt
@@ -261,7 +261,7 @@ add_definitions(
     -DTNZSTDFX_EXPORTS
 )
 
-if(APPLE)
+if(BUILD_ENV_APPLE)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libtnzstdfx.dylib")
 endif()
 
@@ -286,7 +286,7 @@ include_directories(
 
 _find_toonz_library(TNZLIBS "tnzcore;tnzbase;toonzlib")
 
-if(APPLE)
+if(BUILD_ENV_APPLE)
     # macports を使っていると symbol が非互換の /opt/lib が引っ掛かってしまう
     find_library(ICONV_LIB iconv HINTS /usr/lib)
     if(ICONV_LIB-NOTFOUND)
diff --git a/toonz/sources/t32bitsrv/CMakeLists.txt b/toonz/sources/t32bitsrv/CMakeLists.txt
index 5efe593..42076a5 100644
--- a/toonz/sources/t32bitsrv/CMakeLists.txt
+++ b/toonz/sources/t32bitsrv/CMakeLists.txt
@@ -8,7 +8,7 @@ add_executable(t32bitsrv
     t32movmsg.h
 )
 
-if(WIN32)
+if(BUILD_TARGET_WIN)
     include_directories(
         SYSTEM
         ${SDKROOT}/quicktime/QT73SDK/CIncludes
@@ -22,7 +22,7 @@ target_link_libraries(t32bitsrv
     image
 )
 
-if(APPLE AND PLATFORM EQUAL 32)
+if(BUILD_ENV_APPLE AND PLATFORM EQUAL 32)
     get_target_property(bin t32bitsrv LOCATION)
     get_filename_component(bindir ${bin} DIRECTORY)
 
diff --git a/toonz/sources/tnzbase/CMakeLists.txt b/toonz/sources/tnzbase/CMakeLists.txt
index 2f0db52..f31e898 100644
--- a/toonz/sources/tnzbase/CMakeLists.txt
+++ b/toonz/sources/tnzbase/CMakeLists.txt
@@ -114,7 +114,7 @@ set(SOURCES
     tscanner/tscannerepson.cpp
 )
 
-if(WIN32)
+if(BUILD_TARGET_WIN)
     set(SOURCES ${SOURCES}
         tscanner/TScannerIO/TUSBScannerIO_W.cpp
     )
@@ -135,19 +135,19 @@ set(OBJCSOURCES
     tscanner/tscannertwain.cpp
 )
 
-if(WIN32)
+if(BUILD_TARGET_WIN)
     set(OBJCSOURCES ${OBJCSOURCES}
         ../common/twain/ttwain_stateW.c
         ../common/twain/ttwain_utilW.c
         ../common/twain/ttwain_winW.c
     )
-elseif(APPLE)
+elseif(BUILD_TARGET_APPLE)
     set(OBJCSOURCES ${OBJCSOURCES}
         ../common/twain/ttwain_stateM.c
         ../common/twain/ttwain_utilM.c
         ../common/twain/ttwain_winM.c
     )
-elseif(UNIX)
+elseif(BUILD_TARGET_UNIX)
     set(OBJCSOURCES ${OBJCSOURCES}
         ../common/twain/ttwain_stateX.c
         ../common/twain/ttwain_utilX.c
@@ -155,7 +155,7 @@ elseif(UNIX)
     )
 endif()
 
-if(APPLE)
+if(BUILD_ENV_APPLE)
     #set_source_files_properties(${OBJCSOURCES} PROPERTIES LANGUAGE OBJCXX)
     set_source_files_properties(${OBJCSOURCES} PROPERTIES COMPILE_FLAGS "-x objective-c++")
 endif()
@@ -164,7 +164,7 @@ qt5_wrap_cpp(SOURCES ${MOC_HEADERS})
 
 add_library(tnzbase SHARED ${HEADERS} ${SOURCES} ${OBJCSOURCES})
 
-if(APPLE)
+if(BUILD_ENV_APPLE)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libtnzbase.dylib")
 endif()
 
@@ -189,11 +189,11 @@ include_directories(
     ${SDKROOT}/libusb/libusb-1.0.9/include
 )
 
-if(WIN32)
+if(BUILD_ENV_MSVC)
     set(EXTRA_LIBS
         tnzcore
     )
-elseif(APPLE)
+elseif(BUILD_ENV_APPLE)
     find_library(TWAIN_LIB TWAIN)
     find_library(IOKIT_LIB IOKit)
     find_library(COCOA_LIB Cocoa)
@@ -205,16 +205,17 @@ elseif(APPLE)
         ${IOKIT_LIB}
         ${COCOA_LIB}
     )
-elseif(UNIX)
+elseif(BUILD_ENV_UNIXLIKE)
     _find_toonz_library(EXTRA_LIBS "tnzcore")
-    set(EXTRA_LIBS ${EXTRA_LIBS}
-        ${SDL_LIB_LIBRARIES}
-    )
-
-    include_directories(
-        SYSTEM
-        ${SDL_LIB_INCLUDE_DIRS}
-    )
+    if(NOT BUILD_TARGET_WIN)
+        set(EXTRA_LIBS ${EXTRA_LIBS}
+            ${SDL_LIB_LIBRARIES}
+        )
+        include_directories(
+            SYSTEM
+            ${SDL_LIB_INCLUDE_DIRS}
+        )
+    endif()
 endif()
 
 target_link_libraries(tnzbase Qt5::Core Qt5::Gui ${EXTRA_LIBS})
diff --git a/toonz/sources/tnzcore/CMakeLists.txt b/toonz/sources/tnzcore/CMakeLists.txt
index f30d022..8b605b7 100644
--- a/toonz/sources/tnzcore/CMakeLists.txt
+++ b/toonz/sources/tnzcore/CMakeLists.txt
@@ -245,17 +245,17 @@ set(SOURCES
     ../common/tmsgcore.cpp
 )
 
-if(WIN32)
+if(BUILD_TARGET_WIN)
     set(SOURCES ${SOURCES}
         ../common/tsound/tsound_nt.cpp
         ../common/tvrender/tfont_nt.cpp
     )
-elseif(APPLE)
+elseif(BUILD_TARGET_APPLE)
     set(SOURCES ${SOURCES}
         ../common/tsound/tsound_mac.cpp
         ../common/tvrender/tfont_mac.cpp
     )
-elseif(UNIX)
+elseif(BUILD_TARGET_UNIX)
     set(SOURCES ${SOURCES}
         ../common/tvrender/tfont_qt.cpp
     )
@@ -276,7 +276,7 @@ qt5_wrap_cpp(SOURCES ${MOC_HEADERS})
 
 add_library(tnzcore SHARED ${HEADERS} ${SOURCES})
 
-if(APPLE)
+if(BUILD_ENV_APPLE)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libtnzcore.dylib")
 endif()
 
@@ -306,7 +306,8 @@ include_directories(
     ../common/flash
     ${SDKROOT}/Lz4/Lz4_131/lib/
 )
-if(WIN32)
+
+if(BUILD_TARGET_WIN)
     if(PLATFORM EQUAL 32)
         include_directories(
             SYSTEM
@@ -315,7 +316,8 @@ if(WIN32)
     endif()
 endif()
 
-if(WIN32)
+
+if(BUILD_ENV_MSVC)
     set(EXTRA_LIBS
         netapi32.lib
         mpr.lib
@@ -323,7 +325,7 @@ if(WIN32)
         opengl32.lib
         glu32.lib
     )
-elseif(APPLE)
+elseif(BUILD_ENV_APPLE)
     find_library(AUDIOUNIT_LIB AudioUnit)
     find_library(AUDIOTB_LIB AudioToolbox)
     find_library(CARBON_LIB Carbon)
@@ -333,15 +335,25 @@ elseif(APPLE)
         ${AUDIOTB_LIB}
         ${CARBON_LIB}
     )
-elseif(UNIX)
-    set(QT_LIB)  # avoid warning
-    include_directories(
-        SYSTEM
-        ${FREETYPE_INCLUDE_DIRS}
-    )
+elseif(BUILD_ENV_UNIXLIKE)
+    if(NOT BUILD_TARGET_WIN)
+        include_directories(
+            SYSTEM
+            ${FREETYPE_INCLUDE_DIRS}
+        )
+    endif()
     set(EXTRA_LIBS
         ${GLU_LIB}
     )
+    if(BUILD_TARGET_WIN)
+        set(EXTRA_LIBS
+            ${EXTRA_LIBS}
+            -lnetapi32
+            -lmpr
+            -lwinmm
+            -lpsapi
+        )
+    endif()
 endif()
 
 target_link_libraries(tnzcore
diff --git a/toonz/sources/tnzext/CMakeLists.txt b/toonz/sources/tnzext/CMakeLists.txt
index 064afd0..2d85a09 100644
--- a/toonz/sources/tnzext/CMakeLists.txt
+++ b/toonz/sources/tnzext/CMakeLists.txt
@@ -72,14 +72,14 @@ set(SOURCES
 set(OBJCSOURCES
 )
 
-if(WIN32 AND PLATFORM EQUAL 32)
+if(BUILD_ENV_MSVC AND PLATFORM EQUAL 32)
     # can not link libopenblas_32.lib with SAFESEH
     set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
 endif()
 
 add_library(tnzext SHARED ${HEADERS} ${SOURCES} ${OBJCSOURCES})
 
-if(APPLE)
+if(BUILD_ENV_APPLE)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libtnzext.dylib")
 endif()
 
@@ -90,11 +90,11 @@ add_definitions(
 message("subdir: tnzext")
 message("Bin: " ${CMAKE_CURRENT_BINARY_DIR})
 
-if(APPLE)
+if(BUILD_ENV_APPLE)
     find_library(ACCE_LIB Accelerate)
 endif()
 
-if(WIN32 OR APPLE)
+if(BUILD_ENV_MSVC OR BUILD_ENV_APPLE)
     # Warning, this looks wrong,
     # should _only_ use SUPERLU_INCLUDE_DIR, for now do this with Linux.
     include_directories(
@@ -108,13 +108,13 @@ else()
     )
 endif()
 
-if(WIN32)
+if(BUILD_ENV_MSVC)
     target_link_libraries(tnzext
         Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Network
         ${GLUT_LIB} ${GL_LIB} ${SUPERLU_LIB} ${OPENBLAS_LIB} ${EXTRA_LIBS}
         tnzcore tnzbase
     )
-elseif(APPLE)
+elseif(BUILD_ENV_APPLE)
     set(EXTRA_LIBS
         ${CMAKE_CURRENT_BINARY_DIR}/../tnzcore/libtnzcore.dylib
         ${CMAKE_CURRENT_BINARY_DIR}/../tnzbase/libtnzbase.dylib
@@ -124,13 +124,11 @@ elseif(APPLE)
         Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Network
         ${ACCE_LIB} ${GLUT_LIB} ${GL_LIB} ${SUPERLU_LIB} ${EXTRA_LIBS}
     )
-elseif(UNIX)
+elseif(BUILD_ENV_UNIXLIKE)
     _find_toonz_library(EXTRA_LIBS "tnzcore;tnzbase")
 
-    set(EXTRA_LIBS ${EXTRA_LIBS} ${OPENBLAS_LIB})
-
     target_link_libraries(tnzext
         Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Network
-        ${GLUT_LIB} ${GL_LIB} ${SUPERLU_LIB} ${EXTRA_LIBS}
+        ${GLUT_LIB} ${GL_LIB} ${SUPERLU_LIB} ${OPENBLAS_LIB} ${EXTRA_LIBS}
     )
 endif()
diff --git a/toonz/sources/tnztools/CMakeLists.txt b/toonz/sources/tnztools/CMakeLists.txt
index c597e31..4fd4c19 100644
--- a/toonz/sources/tnztools/CMakeLists.txt
+++ b/toonz/sources/tnztools/CMakeLists.txt
@@ -107,7 +107,7 @@ add_definitions(
     -DTNZTOOLS_EXPORTS
 )
 
-if(APPLE)
+if(BUILD_ENV_APPLE)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libtnztools.dylib")
 endif()
 
diff --git a/toonz/sources/toonz/CMakeLists.txt b/toonz/sources/toonz/CMakeLists.txt
index 7b5bd6b..fe46957 100644
--- a/toonz/sources/toonz/CMakeLists.txt
+++ b/toonz/sources/toonz/CMakeLists.txt
@@ -320,20 +320,20 @@ set(OBJCSOURCES filebrowsermodel.cpp)
 # Resource file(s)
 set(RESOURCES toonz.qrc)
 
-if(WIN32)
+if(BUILD_ENV_MSVC)
     set(RC_FILE toonz.rc)
 endif()
 
 qt5_add_resources(SOURCES ${RESOURCES})
 
-if(APPLE)
+if(BUILD_ENV_APPLE)
     #set_source_files_properties(${OBJCSOURCES} PROPERTIES LANGUAGE OBJCXX)
     set_source_files_properties(${OBJCSOURCES} PROPERTIES COMPILE_FLAGS "-x objective-c++")
 endif()
 
 qt5_wrap_cpp(SOURCES ${MOC_HEADERS})
 
-if(WIN32)
+if(BUILD_ENV_MSVC)
     add_executable(OpenToonz_${VERSION} WIN32 ${HEADERS} ${SOURCES} ${OBJCSOURCES} ${RESOURCES} ${RC_FILE})
 else()
     set(MACOSX_BUNDLE_ICON_FILE "OpenToonz.icns")
@@ -349,7 +349,7 @@ else()
     #)
 endif()
 
-if(WIN32)
+if(BUILD_TARGET_WIN)
     add_definitions(
         -DUNICODE
         -D_UNICODE
@@ -367,13 +367,13 @@ include_directories(
     ../../sources/toonzqt
 )
 
-if(APPLE)
+if(BUILD_ENV_APPLE)
     include_directories(../../sources/mousedragfilter)
 endif()
 
 
 
-if(WIN32)
+if(BUILD_TARGET_WIN)
     if(PLATFORM EQUAL 32)
         include_directories(
             SYSTEM
@@ -382,14 +382,14 @@ if(WIN32)
     endif()
 endif()
 
-if(WIN32)
+if(BUILD_ENV_MSVC)
     target_link_libraries(OpenToonz_${VERSION}
         Qt5::WinMain Qt5::Core Qt5::Gui Qt5::Network Qt5::OpenGL Qt5::Svg Qt5::Xml
         Qt5::Script Qt5::Widgets Qt5::PrintSupport Qt5::Multimedia
         ${GL_LIB} ${GLUT_LIB} strmiids
         tnzcore tnzbase toonzlib colorfx tnzext image sound toonzqt tnztools tnzstdfx tfarm
     )
-elseif(APPLE)
+elseif(BUILD_ENV_APPLE)
     find_library(COCOA_LIB Cocoa)
 
     _find_toonz_library(EXTRA_LIBS "tnzcore;tnzbase;toonzlib;colorfx;tnzext;image;sound;toonzqt;tnztools")
@@ -405,7 +405,7 @@ elseif(APPLE)
         ${COCOA_LIB} ${EXTRA_LIBS} mousedragfilter
     )
 
-elseif(UNIX)
+elseif(BUILD_ENV_UNIXLIKE)
     _find_toonz_library(EXTRA_LIBS "tnzcore;tnzbase;toonzlib;colorfx;tnzext;image;sound;toonzqt;tnztools")
 
     # 変なところにライブラリ生成するカスども
@@ -413,6 +413,10 @@ elseif(UNIX)
 
     set(EXTRA_LIBS ${EXTRA_LIBS} ${Boost_LIBRARIES} ${OPENBLAS_LIB})
 
+    if(BUILD_TARGET_WIN)
+        set(EXTRA_LIBS ${EXTRA_LIBS} Qt5::WinMain -lstrmiids)
+    endif()
+
     target_link_libraries(
         OpenToonz_${VERSION} Qt5::Core Qt5::Gui Qt5::Network Qt5::OpenGL Qt5::Svg Qt5::Xml
         Qt5::Script Qt5::Widgets Qt5::PrintSupport Qt5::Multimedia
@@ -421,7 +425,7 @@ elseif(UNIX)
     )
 endif()
 
-if(APPLE)
+if(BUILD_ENV_APPLE)
     # CMAKE_RUNTIME_OUTPUT_DIRECTORY should be equivalent to usage on windows despite empty
     # OSX だと CMAKE_RUNTIME_OUTPUT_DIRECTORY が空だが Windows 版と同じ使い方ができるようにしておく
     get_target_property(bin OpenToonz_${VERSION} LOCATION)
@@ -434,7 +438,7 @@ if(LZODRIVER_FOUND)
     add_custom_command(TARGET OpenToonz_${VERSION} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:lzodecompress> ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} DEPENDS lzodecompress)
 endif()
 
-if(APPLE)
+if(BUILD_ENV_APPLE)
     get_target_property(loc OpenToonz_${VERSION} MACOSX_BUNDLE_NAME)
     message(" ==> App Bundle: " ${loc})
     message(" ==> Mach-o: " ${bin})
@@ -456,7 +460,55 @@ if(APPLE)
     add_custom_command(TARGET OpenToonz_${VERSION} POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/OpenToonz_${VERSION}.app/Contents/Resources)
     add_custom_command(TARGET OpenToonz_${VERSION} POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/qss)
     add_custom_command(TARGET OpenToonz_${VERSION} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../install/SystemVar.ini ${CMAKE_CURRENT_BINARY_DIR}/OpenToonz_${VERSION}.app/Contents/Resources)
-elseif(UNIX)
+elseif(BUILD_ENV_UNIXLIKE AND BUILD_TARGET_WIN)
+    # Setup files on Windows platform while cross compilation.
+    install(
+        TARGETS
+            OpenToonz_${VERSION}
+        DESTINATION bin
+    )
+
+    install(
+        PROGRAMS
+            "$<TARGET_FILE:tcleanup>"
+            "$<TARGET_FILE:tcomposer>"
+            "$<TARGET_FILE:tconverter>"
+            "$<TARGET_FILE:tfarmcontroller>"
+            "$<TARGET_FILE:tfarmserver>"
+        DESTINATION bin
+    )
+
+    if(LZODRIVER_FOUND)
+        install(
+            PROGRAMS
+                "$<TARGET_FILE:lzocompress>"
+                "$<TARGET_FILE:lzodecompress>"
+            DESTINATION bin
+        )
+    endif()
+
+    install(
+        FILES
+            "$<TARGET_FILE:tnzcore>"
+            "$<TARGET_FILE:tnzbase>"
+            "$<TARGET_FILE:toonzlib>"
+            "$<TARGET_FILE:colorfx>"
+            "$<TARGET_FILE:tnzext>"
+            "$<TARGET_FILE:image>"
+            "$<TARGET_FILE:sound>"
+            "$<TARGET_FILE:toonzqt>"
+            "$<TARGET_FILE:tnztools>"
+            "$<TARGET_FILE:tnzstdfx>"
+            "$<TARGET_FILE:tfarm>"
+        DESTINATION bin
+    )
+    
+    install(
+        DIRECTORY
+            ${CMAKE_SOURCE_DIR}/../../stuff
+        DESTINATION share/opentoonz
+    )
+elseif(BUILD_ENV_UNIXLIKE AND NOT BUILD_TARGET_WIN)
     # Setup files on Linux/Unix platform.
     # not essential since the binary can run in-place,
     # but useful for package managers.
diff --git a/toonz/sources/toonzfarm/tfarm/CMakeLists.txt b/toonz/sources/toonzfarm/tfarm/CMakeLists.txt
index 099c5c1..a681a1f 100644
--- a/toonz/sources/toonzfarm/tfarm/CMakeLists.txt
+++ b/toonz/sources/toonzfarm/tfarm/CMakeLists.txt
@@ -27,7 +27,7 @@ add_definitions(
     -DTFARM_EXPORTS
 )
 
-if(APPLE)
+if(BUILD_ENV_APPLE)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libtfarm.dylib")
 endif()
 
@@ -38,19 +38,22 @@ include_directories(
     ../include
 )
 
-if(WIN32)
+if(BUILD_ENV_MSVC)
     set(EXTRA_LIBS
         tnzcore tnzbase toonzlib
         ws2_32.lib
     )
-elseif(APPLE)
+elseif(BUILD_ENV_APPLE)
     set(EXTRA_LIBS
         ${CMAKE_CURRENT_BINARY_DIR}/../../tnzcore/libtnzcore.dylib
         ${CMAKE_CURRENT_BINARY_DIR}/../../tnzbase/libtnzbase.dylib
         ${CMAKE_CURRENT_BINARY_DIR}/../../toonzlib/libtoonzlib.dylib
     )
-elseif(UNIX)
+elseif(BUILD_ENV_UNIXLIKE)
     _find_toonz_library(EXTRA_LIBS "tnzcore;tnzbase;toonzlib;tnzext")
+    if(BUILD_TARGET_WIN)
+        set(EXTRA_LIBS ${EXTRA_LIBS} -lws2_32)
+    endif()
 endif()
 
 target_link_libraries(tfarm
diff --git a/toonz/sources/toonzlib/CMakeLists.txt b/toonz/sources/toonzlib/CMakeLists.txt
index dbfb826..ae3f654 100644
--- a/toonz/sources/toonzlib/CMakeLists.txt
+++ b/toonz/sources/toonzlib/CMakeLists.txt
@@ -312,7 +312,7 @@ set(SOURCES
     textureutils.cpp
 )
 
-if(WIN32)
+if(BUILD_TARGET_WIN)
     set(SOURCES ${SOURCES}
         avicodecrestrictions.cpp
     )
@@ -323,7 +323,7 @@ add_translation(toonzlib ${HEADERS} ${SOURCES})
 qt5_wrap_cpp(SOURCES ${MOC_HEADERS})
 
 add_library(toonzlib SHARED ${HEADERS} ${SOURCES})
-if(APPLE)
+if(BUILD_ENV_APPLE)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libtoonzlib.dylib")
 endif()
 
@@ -342,13 +342,13 @@ include_directories(
     ../toonzfarm/include
 )
 
-if(WIN32)
+if(BUILD_ENV_MSVC)
     target_link_libraries(toonzlib
         Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Script
         ${GLUT_LIB} ${GL_LIB} vfw32.lib
         tnzcore tnzbase tnzext
     )
-elseif(APPLE)
+elseif(BUILD_ENV_APPLE)
     set(EXTRA_LIBS
         ${CMAKE_CURRENT_BINARY_DIR}/../tnzcore/libtnzcore.dylib
         ${CMAKE_CURRENT_BINARY_DIR}/../tnzbase/libtnzbase.dylib
@@ -357,8 +357,12 @@ elseif(APPLE)
     )
 
     target_link_libraries(toonzlib Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Script ${GLUT_LIB} ${GL_LIB} ${EXTRA_LIBS})
-elseif(UNIX)
+elseif(BUILD_ENV_UNIXLIKE)
     _find_toonz_library(EXTRA_LIBS "tnzcore;tnzbase;tnzext")
 
+    if(BUILD_TARGET_WIN)
+        set(EXTRA_LIBS ${EXTRA_LIBS} -lvfw32)
+    endif()
+
     target_link_libraries(toonzlib Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Script ${GLUT_LIB} ${GL_LIB} ${EXTRA_LIBS})
 endif()
diff --git a/toonz/sources/toonzqt/CMakeLists.txt b/toonz/sources/toonzqt/CMakeLists.txt
index 5ac9c48..ebfb04a 100644
--- a/toonz/sources/toonzqt/CMakeLists.txt
+++ b/toonz/sources/toonzqt/CMakeLists.txt
@@ -213,7 +213,7 @@ qt5_add_resources(SOURCES ${RESOURCES})
 qt5_wrap_cpp(SOURCES ${MOC_HEADERS} OPTIONS ${incs})
 
 add_library(toonzqt SHARED ${HEADERS} ${SOURCES} ${RESOURCES})
-if(APPLE)
+if(BUILD_ENV_APPLE)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-install_name,@rpath/libtoonzqt.dylib")
 endif()
 
@@ -228,10 +228,16 @@ message("Bin: " ${CMAKE_CURRENT_BINARY_DIR})
 
 _find_toonz_library(EXTRA_LIBS "tnzcore;tnzbase;tnzext;toonzlib;sound")
 
-if(WIN32)
+if(BUILD_ENV_MSVC)
     set(EXTRA_LIBS ${EXTRA_LIBS}
         advapi32.lib
     )
+elseif(BUILD_ENV_UNIXLIKE)
+    if(BUILD_TARGET_WIN)
+        set(EXTRA_LIBS ${EXTRA_LIBS}
+            -ladvapi32
+        )
+    endif()
 endif()
 
 target_link_libraries(toonzqt Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Network Qt5::OpenGL ${EXTRA_LIBS} ${GL_LIB})