cmake + mingw+QT как указать использовать компилятор от mingw ?

Phoenix

делаю так:
  SET(CMAKE_C_COMPILER gcc)
  SET(CMAKE_CXX_COMPILER g++)
пишет
 

G:\sample>cmake .
— Check for working C compiler: cl
— Check for working C compiler: cl — works
— Detecting C compiler ABI info
— Detecting C compiler ABI info - done
— Check for working CXX compiler: cl
— Check for working CXX compiler: cl — works
— Detecting CXX compiler ABI info
— Detecting CXX compiler ABI info - done
— ! g++
— Looking for Q_WS_X11
— Looking for Q_WS_X11 - not found.
— Looking for Q_WS_WIN
— Looking for Q_WS_WIN - found
— Looking for Q_WS_QWS
— Looking for Q_WS_QWS - not found.
— Looking for Q_WS_MAC
— Looking for Q_WS_MAC - not found.
CMake Error at C:/devusr/CMake2.6/share/cmake-2.6/Modules/FindQt4.cmake:664 (MES
SAGE):
  It appears you're trying to use Visual Studio with Qt built by mingw
Call Stack (most recent call first):
  CMakeLists.txt:58 (FIND_PACKAGE)
— Configuring incomplete, errors occurred!
G:\sample>
 

cl - это компилер от MS. Мне он не нужен.
 

PROJECT(pornostop)

#cmake simple file
IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.4)
MESSAGE(FATAL_ERROR
"${PROJECT_NAME} requires at least CMake v2.4."
" You are running v${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}."
" Please upgrade.")
ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.4)

IF (NOT WIN32)
CMAKE_MINIMUM_REQUIRED(VERSION 2.4 FATAL_ERROR)
ELSE (NOT WIN32)
CMAKE_MINIMUM_REQUIRED(VERSION 2.4.6 FATAL_ERROR)
SET(CMAKE_C_COMPILER gcc)
SET(CMAKE_CXX_COMPILER g++)

#set(QT_WIN32_PREFIX "C:/devusr/Qt/4.4.1")

#set(QT_LIBRARY_DIR ${QT_WIN32_PREFIX}/lib)
#set(QT_INCLUDE_DIR ${QT_WIN32_PREFIX}/include)
#set(QT_MKSPECS_DIR ${QT_WIN32_PREFIX}/mkspecs)
#set(QT_MOC_EXECUTABLE ${QT_X11_DIR}/moc)
#set(QT_QMAKE_EXECUTABLE ${QT_X11_DIR}/qmake)
#set(QT_UIC_EXECUTABLE ${QT_X11_DIR}/uic)

#set(QT_QTCORE_LIBRARY ${QT_WIN32_PREFIX}/lib/libQtCore4.a)
#set(QT_QTCORE_INCLUDE_DIR ${QT_WIN32_PREFIX}/include/QtCore)

#set(QT_QTGUI_LIBRARY ${QT_WIN32_PREFIX}/lib/libQtGui4.a)
#set(QT_QTGUI_INCLUDE_DIR ${QT_WIN32_PREFIX}/include/QtGui)

ENDIF (NOT WIN32)

IF (NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE Debug) #build with debug support
ENDIF (NOT CMAKE_BUILD_TYPE)


MESSAGE(STATUS "! ${CMAKE_CXX_COMPILER}")

# GLIBC getopt. n/a on Windows platform
#IF (WIN32)
#INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/glibc)
#SET(getopt_SRC
# glibc/getopt.c
# glibc/getopt1.c
#)
#SET(getopt_HDR
# glibc/getopt.h
#)
#ENDIF (WIN32)




SET(QT_USE_QTMAIN True)
FIND_PACKAGE(Qt4 REQUIRED) # find and setup Qt4 for this project
INCLUDE(${QT_USE_FILE})

#INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindRTL2.cmake)

# INCLUDE_DIRECTORIES(
# ${QT_INCLUDE_DIR}
# )


INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
#INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/shared/src)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
#INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/shared/src)

#INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/shared/cmake_widgets_list.txt)

SET(main_SRCS
src/main.cpp
src/mainwnd.cpp
)

SET(main_HDRS
src/mainwnd.h
)

SET(main_UIS
src/onoffwnd.ui
)

SET(main_MOC_HDRS
src/onoffwnd.h
)

ADD_DEFINITIONS(-DMKOAR )
IF(WIN32)
ADD_DEFINITIONS(-DUNICODE)
ENDIF(WIN32)




SET(pornostop_SRCS
${main_SRCS}
)

SET(pornostop_MOC_HDRS
${main_MOC_HDRS}
)

SET(pornostop_HDRS
${main_HDRS}
)

SET(pornostop_UIS
${main_UIS}
)
MESSAGE(STATUS "!")

MESSAGE(STATUS "SRC: ${stopporno_SRCS}")
MESSAGE(STATUS "MOC_HDRS: ${stopporno_MOC_HDRS}")
MESSAGE(STATUS "HDRS: ${stopporno_HDRS}")
MESSAGE(STATUS "UIS: ${stopporno_UIS}")
#SET(stopporno_RES
#)

#QT4_ADD_RESOURCES(stopporno_RES_GEN ${a1a1_RES})

QT4_WRAP_UI(stopporno_UIS_H ${stopporno_UIS})
QT4_WRAP_CPP(stopporno_MOC_SRCS ${stopporno_MOC_HDRS})


MESSAGE(STATUS "SRC: ${stopporno_SRCS}")
MESSAGE(STATUS "MOC_HDRS: ${stopporno_MOC_HDRS}")
MESSAGE(STATUS "HDRS: ${stopporno_HDRS}")
MESSAGE(STATUS "UIS: ${stopporno_UIS}")
MESSAGE(STATUS "UIS_H: ${stopporno_UIS_H}")
MESSAGE(STATUS "MOC_SRCS: ${stopporno_MOC_SRCS}")


IF (WIN32)


ADD_EXECUTABLE(stopporno WIN32
${stopporno_UIS_H}
${stopporno_MOC_SRCS}
${stopporno_SRCS}
${stopporno_HDRS}
)

TARGET_LINK_LIBRARIES(stopporno ${QT_LIBRARIES} ${stopporno_LIBS} )

ELSE (WIN32)
ADD_EXECUTABLE(stopporno
${stopporno_UIS_H}
${stopporno_MOC_SRCS}
${stopporno_SRCS}
${stopporno_HDRS}
)
TARGET_LINK_LIBRARIES(stopporno ${QT_LIBRARIES} ${stopporno_LIBS} )
ENDIF (WIN32)

Phoenix

Check for working CXX compiler: cl
так работает, но это коряво и интересно знать, в чём проблема
 
G:\apps\stop-porno\application\sample>cmake -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_C
OMPILER=gcc .
-- Check for working C compiler: C:/devusr/MinGW/bin/gcc.exe
-- Check for working C compiler: C:/devusr/MinGW/bin/gcc.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: C:/devusr/MinGW/bin/g++.exe

rosali

я в cmake-е не очень силен, но чёто сдается мне, что все эти "Check for working C compiler" и т.п. происходят вообще до чтения CMakeLists.txt, поэтому задавать SET(CMAKE_C_COMPILER gcc) в нем это уже как бы поздно. а через cmake -D... всё должно работать.

Phoenix

Не хочется верить в это, но пока это единственная теория, подтверждённая экспериметом

slonishka

можно еще -C юзать.

Serab

происходят вообще до чтения CMakeLists.txt
это легко проверить. Забей лажу в этот файл и запусти.
Оставить комментарий
Имя или ник:
Комментарий: