LINUX.ORG.RU

[cmake][mingw32-gcc] Получение нескольких бинариков для разных систем

 


0

0

Здравия желаю народ.

Мож кто подскажет, мне нужно при сборке делать сразу две программы: program (для linux), program.exe (для windows).

Потратив N-ое время понял, что дописав set(CMAKE_C_COMPILER mingw32-gcc) можно изменить компилятор на mingw32-gcc и следовательно вместо program (для linux) получать program.exe (для windwos).

Так вот, как получать сразу и то и другое средставми cmake я так и не понял. Мож кто с этим сталкивался ткнёт носом в нужный ман.

★★

Идеологически правильно это сделать две директории сборки для разных платформ.

Reset ★★★★★
()
Ответ на: комментарий от dimon555
$ yum info mingw32-gcc
Installed Packages
Name       : mingw32-gcc
Arch       : i686
Version    : 4.4.2
Release    : 2.fc13
Size       : 3.0 M
Repo       : installed
From repo  : 
Summary    : MinGW Windows cross-compiler (GCC) for C
URL        : http://gcc.gnu.org
License    : GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions
Description: MinGW Windows cross-compiler (GCC) for C.

4.4.2 - это старый? Линуксовый стоит 4.4.4, я б не сказал, что большая разница.

vga ★★
()

http://www.cmake.org/Wiki/CMake_Cross_Compiling

Создаёшь toolchain-файл примерно следующего содержания:

# the name of the target operating system
SET(CMAKE_SYSTEM_NAME Windows)

# which compilers to use for C and C++
SET(CMAKE_C_COMPILER i586-mingw32msvc-gcc)
SET(CMAKE_CXX_COMPILER i586-mingw32msvc-g++)

# here is the target environment located
SET(CMAKE_FIND_ROOT_PATH  /usr/i586-mingw32msvc /home/alex/mingw-install )

# adjust the default behaviour of the FIND_XXX() commands:
# search headers and libraries in the target environment, search 
# programs in the host environment
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

cmake вызываешь с параметром:

-DCMAKE_TOOLCHAIN_FILE=<имя toolchain-файла>

SSN
()

И да: для различных платформ - различные каталоги сборки.

SSN
()
Ответ на: комментарий от dimon555

>mingw там же gcc старый кстати

может лучше cygwin

Вы перепутали. Наоборот в cygwin старый mingw (ветка 4.xx в cygwin не поддерживает -mno-cygwin).

dmitry_vk ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.