CMAKE:使用不正确的宏参数调用CDR宏:CDR

时间:2017-02-06 13:29:16

标签: c++ linux macos macros cmake

我在我的.cmake文件中遇到此错误,试图运行cmake" CDR宏调用错误的参数,名为:CDR"

我在Linux上使用完全相同的文件,并且从未将此问题发生在Mac上。

我假设Linux和OSx具有类似的配置。

有什么想法吗?

这是我得到的错误:

  

〜/ Findsmpq.cmake:20(CDR):使用不正确的参数调用CDR宏   对于宏命名:CDR Call Stack(最近一次呼叫):
  〜/ cmakemodules / Findsmpq.cmake:166   (LIST_INDEX)CMakeLists.txt:172(find_package)

这是我的.cmake文件的代码。

   7   #--------------------------------------
   8 # macros related to list
   9 MACRO(CAR var)
   10 SET(${var} ${ARGV1})
   11 ENDMACRO(CAR)
   12 
   13 MACRO(CDR var junk)
   14 SET(${var} ${ARGN})
   15 ENDMACRO(CDR)
   16 
   17 MACRO(LIST_INDEX var index)
   18 SET(list . ${ARGN})
   19 FOREACH(i RANGE 1 ${index})
   20 CDR(list ${list})
   21 ENDFOREACH(i)
   22 CAR(${var} ${list})
   23 ENDMACRO(LIST_INDEX)
   24 
   25 #--------------------------------------

和第166行

 134 #--------------------------------------
 135 # to find Qt choose compiler directory
 136 MACRO(QT_COMPILER_LIST result2 curdir2)
 137
 138 FILE(GLOB children2 RELATIVE ${curdir2} ${curdir2}/*)
 139
 140 SET(dirlist2 "")
 141
 142 FOREACH(child2 ${children2})
 143 if(IS_DIRECTORY ${curdir2}/${child2})
 144   if(WIN32)
 145     string(REGEX MATCH "^msvc[_0-9]*" QTCOMP ${child2})  #RE to match MSVC compiled libraries by default
 146   endif(WIN32)
 147   if(UNIX)
 148     string(REGEX MATCH "^gcc[_0-9]*" QTCOMP ${child2})  #RE to match GCC compiled libraries by default (64 bit)
 149   endif(UNIX)
 150
 151  LIST(APPEND dirlist2 ${QTCOMP})
 152 endif()
 153 ENDFOREACH()
 154
 155 SET(${result2} ${dirlist2})
 156
 157 ENDMACRO()
 158
 159 QT_COMPILER_LIST(QT_COMP_DIR ${HOME_DIR}/${QT_PREFIX}/${QT_VER_PREFIX})
 160
 161 message(STATUS "QT_COMP_DIR_LIST :" ${QT_COMP_DIR})
 162
 163 LIST(LENGTH QT_COMP_DIR len)
 164 MESSAGE(STATUS "Number of Qt Compilers:" ${len})
 165
 166 LIST_INDEX(QT_COM_PATH ${len} ${QT_COMP_DIR})   #len specifies which compiler from the list to use
 167 message(STATUS "QT COMP DIR USED:" ${QT_COM_PATH})
 168
 169 if(WIN32)
 170   set(POSSIBLE_PREFIX_PATH  ${HOME_DIR}${QT_PREFIX}/${QT_VER_PREFIX}/${QT_COM_PATH}/lib/cmake)
 171   message(STATUS "QT POSSIBLE_PREFIX_PATH:" ${POSSIBLE_PREFIX_PATH})
 172 endif(WIN32)
 173
 174 if(UNIX)
 175   set(POSSIBLE_PREFIX_PATH ${HOME_DIR}/${QT_PREFIX}/${QT_VER_PREFIX}/${QT_COM_PATH}/lib/cmake)
 176   message(STATUS "QT POSSIBLE_PREFIX_PATH:" ${POSSIBLE_PREFIX_PATH})
 177 endif(UNIX)
 178
 179 find_path(CMAKE_DIR Qt5Config.cmake PATHS ${POSSIBLE_PREFIX_PATH}/Qt5)
 180
 181 endif()
 182
 183 #--------------------------------------------------------------

现在查看CMakeLists.txt中的第172行

168 #smpq qt based application
169
170 if(ENABLE_QT_GUI)
171
172  find_package(smpq)
173  if(NOT SMPQ_FOUND)
174    message(FATAL_ERROR "Could not find SMPQ")
175  endif(NOT SMPQ_FOUND)
176
177  set(CMAKE_PREFIX_PATH ${PREFIX_PATH})
178  message(STATUS "CMAKE_PREFIX_PATH" ${CMAKE_PREFIX_PATH})
179
180  find_package(Qt5 REQUIRED COMPONENTS Widgets Core Sql PrintSupport)
181
182  qt5_wrap_cpp(QtProjectLib_hdr_moc ${QtProjectLib_hdr})
183  qt5_wrap_ui(QtProjectLib_ui_uic ${QtProjectLib_ui})
184  qt5_add_resources(QtProjectLib_qrc_rcc ${QtProjectRsc_qrc})
185
186  include_directories (${PROJECT_SOURCE_DIR})
187  include_directories (${PROJECT_BINARY_DIR})
188
189  add_library (QtProjectLib STATIC ${QtProjectLib_src} ${QtProjectLib_hdr_moc} ${QtProjectLib_ui_uic})
190
191  target_link_libraries (QtProjectLib 
192    Qt5::Core 
193    Qt5::Gui 
194    Qt5::Widgets 
195    Qt5::Sql 
196    Qt5::PrintSupport)
197
198  # WIN32 to suppress the console window under Windows
199  add_executable(KTAB_SMP WIN32 ${QtProjectBin_src} ${QtProjectLib_qrc_rcc})
200
201  target_link_libraries (KTAB_SMP
202    QtProjectLib 
203    smp 
204    ${KMODEL_LIBRARY} 
205    ${KUTILS_LIBRARY} 
206    ${SQLITE_LIBRARIES} 
207    ${EFENCE_LIBRARIES}
208    ${TINYXML2_LIBRARIES})
209
210  if(ENABLE_COPY_QT_LIBS AND WIN32)
211    find_package(qtdlls)
212  endif(ENABLE_COPY_QT_LIBS AND WIN32)
213
214 endif (ENABLE_QT_GUI)

0 个答案:

没有答案