[CMake] moc not being run successfully (every time) in Visual Studio 2003
John Drescher
drescherjm at gmail.com
Tue Apr 22 10:00:25 EDT 2008
I am running CMake-2.7.2008.04.21 and under Visual Studio moc does not
run correctly all the time for my QT4 projects.
Here is the error:
------ Build started: Project: LungAnalysis, Configuration: Debug Win32 ------
Generating qrc_LungAnalysis.cxx
Generating moc_textwidget.cxx
moc: Cannot open options file specified with @
Usage: moc [options] <header-file>
-o<file> write output to file rather than stdout
-I<dir> add dir to the include path for header files
-E preprocess only; do not generate meta object code
-D<macro>[=<def>] define macro, with optional definition
-U<macro> undefine macro
-i do not generate an #include statement
-p<path> path prefix for included file
-f[<file>] force #include, optional file name
-nw do not display warnings
-v display version of moc
Project : error PRJ0019: A tool returned an error code from
"Generating moc_textwidget.cxx"
Build log was saved at
"file://x:\VC.NET\Libraries\MyCode\LungAnalysis\LungAnalysis.dir\Debug\BuildLog.htm"
LungAnalysis - 1 error(s), 0 warning(s)
------ Skipped Build: Project: ALL_BUILD, Configuration: Debug Win32 ------
Project configuration skipped because it is not selected in this
solution configuration
---------------------- Done ----------------------
Build: 0 succeeded, 1 failed, 1 skipped
If I run moc directly from the project directory all is fine:
[x:\vc.net\libraries\mycode\lunganalysis]moc @moc_textwidget.cxx_parameters
[x:\vc.net\libraries\mycode\lunganalysis]moc @moc_mainwindow.cxx_parameters
I ran through the Qt tutorial building everything (in my own folder)
using CMake to generate Visual Studio 2003 projects. For the 14
projects in the tutorial 3 or 4 of them failed with this error. Some
of the times exiting Visual C++ and restarting it caused it to work
correctly but others it failed the same way.
Here is an example CMakeLists.txt (Please note I just started using
CMake, QT and ITK last week ...)
PROJECT(LungAnalysis)
IF(WIN32)
CMAKE_MINIMUM_REQUIRED(VERSION 2.5 FATAL_ERROR)
ENDIF(WIN32)
SET (LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin CACHE INTERNAL
"Single output directory for building all libraries.")
SET (EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin CACHE INTERNAL
"Single output directory for building all executables.")
FIND_PACKAGE( Qt4 REQUIRED )
FIND_PACKAGE( ITK REQUIRED )
INCLUDE_DIRECTORIES( ${QT_INCLUDE_DIR} )
INCLUDE( ${QT_USE_FILE} ${ITK_USE_FILE} )
SET( UPMC_LA_SRCS
./main.cxx
./mainwindow.cxx
./textwidget.cxx
)
SET( UPMC_LA_MOC_HDR
./mainwindow.h
./textwidget.h
)
# and finally an resource file
SET( UPMC_LA_RCS
./rc/LungAnalysis.qrc
)
# this command will generate rules that will run rcc on all files from
UPMC_LA_RCS
# in result UPMC_LA_RC_SRCS variable will contain paths to files produced by rcc
QT4_ADD_RESOURCES( UPMC_LA_RC_SRCS ${UPMC_LA_RCS} )
# and finally this will run moc:
QT4_WRAP_CPP( UPMC_LA_MOC_SRCS ${UPMC_LA_MOC_HDR} )
LINK_LIBRARIES ( LungAnalysis ${QT_LIBRARIES} )
IF(COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
ADD_EXECUTABLE( LungAnalysis ${UPMC_LA_SRCS} ${UPMC_LA_MOC_SRCS}
${UPMC_LA_MOC_HDR} ${UPMC_LA_RC_SRCS} )
Thanks in Advance,
John
More information about the CMake
mailing list