如何将qmake项目移植到cmake [英] How to port a qmake project to cmake

查看:105
本文介绍了如何将qmake项目移植到cmake的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想移植" 此C ++项目,该项目使用 qmake (即 Tool.pro 文件),到 cmake .

I would like to "port" this C++ project, which uses qmake (i.e., a Tool.pro file) for building, to cmake.

本质上,我想问一下如何通过查看上面的 Tool.pro 文件来编写必要的 CMakeLists.txt 文件.

Essentially, I'm asking how to go about writing the necessary CMakeLists.txt file(s) by looking at the Tool.pro file above.

这是我到目前为止所做的:

This is what I've done so far:

include_directories(../lib/cudd-2.5.0/include BFAbstractionLibrary)

add_executable(slugs BFAbstractionLibrary/bddDump.cpp BFAbstractionLibrary/BFCuddVarVector.cpp BFAbstractionLibrary/BFCudd.cpp BFAbstractionLibrary/BFCuddManager.cpp \
    BFAbstractionLibrary/BFCuddVarCube.cpp tools.cpp synthesisAlgorithm.cpp synthesisContextBasics.cpp variableManager.cpp \
    BFAbstractionLibrary/BFCuddMintermEnumerator.cpp)

add_library(lcudd ../lib/cudd-2.5.0/cudd)
add_library(ldddmp ../lib/cudd-2.5.0/dddmp)
add_library(lmtr ../lib/cudd-2.5.0/mtr)
add_library(lepd ../lib/cudd-2.5.0/epd)
add_library(lst ../lib/cudd-2.5.0/st)
add_library(lutil ../lib/cudd-2.5.0/util)

target_link_libraries(slugs lcudd, lutil, lmtr, lst, ldddmp, lepd)

这肯定缺少 Tool.pro 文件中存在的标题.我也不确定 Tool.pro 文件的前24行中的标志有什么用.

This is definitely missing the headers that are present in the Tool.pro file. I'm also not sure what I have to do with the flags in the first 24 lines of the Tool.pro file.

能给我指出正确的方向吗?

Could you point me in the right direction please?

  • PS1.我已经看过CMake教程.
  • PS2.我试过了两个脚本: q2c qmake2cmake .前者建造了一个本质上空的 CMakeLists.txt 文件.后者建造了一个貌似还可以的文件,但随后 make 失败,因为它找不到某些头文件(位于子目录中).
  • PS3.我已经使用 qmake 成功构建了项目.
  • PS1. I have already looked at the CMake Tutorial.
  • PS2. I have tried two scripts: q2c, qmake2cmake. The former built an essentially empty CMakeLists.txt file. The latter built a seemingly OK file but then make failed saying it couldn't find some header file (which is located in a subdirectory).
  • PS3. I have successfully built the project with qmake.

推荐答案

在牺牲了上面 Tool.pro 文件的某些模块化和复杂性之后,我能够使用 cmake .这是我编写的 CMakeLists.txt 文件:

After sacrificing some of the modularity and complexity of the Tool.pro file above, I was able to build the project using cmake. Here's the CMakeLists.txt file that I wrote:

project( slugs )

cmake_minimum_required( VERSION 2.6 )

add_definitions ( -Wall )
add_definitions ( -D USE_CUDD )

set ( BDDFLAGS "-mtune=native -malign-double -DHAVE_IEEE_754 -DBSD -DCUDD_COMPILER_OPTIONS_SET" ) # hardcoded for x86_64
add_definitions ( ${BDDFLAGS} )

set ( CMAKE_BUILD_TYPE Debug )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=gnu++0x -Wall -Wextra ${BDDFLAGS}")

include_directories ( ../lib/cudd-2.5.0/include BFAbstractionLibrary )

set ( slugs_HDRS
    BFAbstractionLibrary/BF.h
    BFAbstractionLibrary/BFCudd.h
    gr1context.hpp
    variableTypes.hpp
    variableManager.hpp
    extensionExtractExplicitStrategy.hpp
    extensionRoboticsSemantics.hpp
    extensionWeakenSafetyAssumptions.hpp
    extensionBiasForAction.hpp
    extensionComputeCNFFormOfTheSpecification.hpp
    extensionCounterstrategy.hpp
    extensionExtractExplicitCounterstrategy.hpp
    extensionIncrementalSynthesis.hpp
    extensionFixedPointRecycling.hpp
    extensionInteractiveStrategy.hpp
    extensionIROSfastslow.hpp
    extensionAnalyzeInitialPositions.hpp
    extensionAnalyzeAssumptions.hpp
    BFAbstractionLibrary/BFCuddMintermEnumerator.h
    extensionComputeInterestingRunOfTheSystem.hpp
    extensionAnalyzeSafetyLivenessInteraction.hpp
    extensionAbstractWinningTraceGenerator.hpp
    extensionInterleave.hpp
    extensionPermissiveExplicitStrategy.hpp
    extensionIncompleteInformationEstimatorSynthesis.hpp
    extensionNondeterministicMotion.hpp
    extensionExtractSymbolicStrategy.hpp
    extensionTwoDimensionalCost.hpp
    )

set ( slugs_SRCS
    main.cpp
    BFAbstractionLibrary/bddDump.cpp
    BFAbstractionLibrary/BFCuddVarVector.cpp
    BFAbstractionLibrary/BFCudd.cpp
    BFAbstractionLibrary/BFCuddManager.cpp
    BFAbstractionLibrary/BFCuddVarCube.cpp
    tools.cpp
    synthesisAlgorithm.cpp
    synthesisContextBasics.cpp
    variableManager.cpp
    BFAbstractionLibrary/BFCuddMintermEnumerator.cpp
    )

set ( slugs_LIBS
    -L../lib/cudd-2.5.0/cudd
    -L../lib/cudd-2.5.0/util
    -L../lib/cudd-2.5.0/mtr
    -L../lib/cudd-2.5.0/st
    -L../lib/cudd-2.5.0/dddmp
    -L../lib/cudd-2.5.0/epd
    -lcudd
    -ldddmp
    -lmtr
    -lepd
    -lst
    -lutil
    )

add_executable ( slugs ${slugs_SRCS} )

target_link_libraries (slugs ${slugs_LIBS})

这篇关于如何将qmake项目移植到cmake的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆