代码之家  ›  专栏  ›  技术社区  ›  fritzmg

CMAKE:为不同的构建目标定义链接目录和库

  •  7
  • fritzmg  · 技术社区  · 14 年前

    我这里有一个VS2008项目。其项目文件由CMAKE生成。我要做的是独立地为调试和发布目标定义库和库目录,也就是说,发布目标的发布libs和调试目标的调试libs。

    到目前为止,我还不知道该怎么做。我知道我可以用 cmake_cxx_标志_调试 cmake_cxx_标志释放 例如(或者构建目标的名称),但是我不知道如何为链接dirs和libs这样做。

    创建了包含所有定义的cmakelists文件的同事尝试使用

    IF( CMAKE_BUILD_TYPE MATCHES "Debug" )
    

    例如,但这不起作用。根据一些cmake wiki,变量 创建类型 不在配置时定义,只在运行时定义,这自然取决于您运行的目标。

    目前,我处于一种死胡同,希望能得到任何提示或指示。

    2 回复  |  直到 14 年前
        1
  •  10
  •   tibur    14 年前

    有一个 target_link_libraries 帮助你做到这一点的选择。但您需要将库名称扩展为完整路径。

    target_link_libraries(foo
      debug c:/path/to/debug/lib/blah.lib 
      optimized c:/path/to/optimized/lib/blah.lib)
    

    如果库位置的命名方式为cmake(debug/minsizerel/relwithdebinfo/release),则可以使用vs $(ConfigurationName) 变量:

    link_directories(c:/path/to/all/libs/$(ConfigurationName)/)
    

    当心, $(配置名称) 不是cmake变量:它只能在构建/链接步骤中按vs展开。

        2
  •  0
  •   stijn    14 年前

    您只需使用配置集调用cmake即可:

    cmake -DCMAKE_BUILD_TYPE="Debug"
    

    或者我要做的是在命令行上指定链接和平台,然后手动调整配置类型:

    cmake -dMyConfigType="DebugStaticX86"
    
    #CMakeLists.txt
    if( ${MyConfigType} STREQUAL "DebugStaticX86" )
      set( CMAKE_BUILD_TYPE Debug )
      set( MyLinkType Static )
      set( MyPlatform x86 )
      #now include other files that set the actual compile/link options
      #depending on values of MyLinkType and MyPlatform
      ....
    endif