How to Compile with -municode for MinGW-w64

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

How to Compile with -municode for MinGW-w64

R0b0t1
Hello,

I pass -municode in add_definitions but GCC still complains about the
wrong type on WinMain, citing it needs an LPSTR argument. With
-municode set it should require a LPWSTR and should be named wWinMain.
If I name the function wWinMain the linker complains about a missing
WinMain, which makes no sense. This works when I create a Makefile
myself.

CMakeLists.txt as follows.

cmake_minimum_required (VERSION 3.5)
project (mtktool)

list (
  APPEND
  CMAKE_MODULE_PATH
  "${CMAKE_CURRENT_LIST_DIR}/cmake"
)

set (mtktool_VERSION_MAJOR 0)
set (mtktool_VERSION_MINOR 0)
set (mtktool_VERSION_PATCH 0)

configure_file (
  "${PROJECT_SOURCE_DIR}/config.h.in"
  "${PROJECT_SOURCE_DIR}/config.h"
)

include_directories (
  "${CMAKE_CURRENT_SOURCE_DIR}"
)

add_definitions (
  -municode
  -mwindows
)

add_executable (
  mtktool
  mtktool.c
)

Cheers,
     R0b0t1
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: How to Compile with -municode for MinGW-w64

Petr Kmoch
Hi R0b0t1,

add_definitions() is for adding preprocessor macro definitions (-D options), not for general compilation options such as -m. You should set the options as compilation options instead, using target_compile_options. Also, -mwindows should probably not be passed directly; instead, use CMake's built-in WIN32 argument in add_executable. Overall, it would look like this:

include_directories (
  "${CMAKE_CURRENT_SOURCE_DIR}"
)

add_executable (
  mtktool
  WIN32
  mtktool.c
)

target_compile_options(
  mtktool PRIVATE -municode
)


Petr

On 30 May 2018 at 04:33, R0b0t1 <[hidden email]> wrote:
Hello,

I pass -municode in add_definitions but GCC still complains about the
wrong type on WinMain, citing it needs an LPSTR argument. With
-municode set it should require a LPWSTR and should be named wWinMain.
If I name the function wWinMain the linker complains about a missing
WinMain, which makes no sense. This works when I create a Makefile
myself.

CMakeLists.txt as follows.

cmake_minimum_required (VERSION 3.5)
project (mtktool)

list (
  APPEND
  CMAKE_MODULE_PATH
  "${CMAKE_CURRENT_LIST_DIR}/cmake"
)

set (mtktool_VERSION_MAJOR 0)
set (mtktool_VERSION_MINOR 0)
set (mtktool_VERSION_PATCH 0)

configure_file (
  "${PROJECT_SOURCE_DIR}/config.h.in"
  "${PROJECT_SOURCE_DIR}/config.h"
)

include_directories (
  "${CMAKE_CURRENT_SOURCE_DIR}"
)

add_definitions (
  -municode
  -mwindows
)

add_executable (
  mtktool
  mtktool.c
)

Cheers,
     R0b0t1
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake


--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake