4

私の質問は CMake に非常に似ています: CMake によって生成されたプロジェクトの構成に応じて、Visual Studio および Xcode 実行可能ファイルの名前を変更します。その投稿では、プロジェクトの構成 (デバッグ、リリースなど) に応じて出力ファイル名が変更されます。もっと行きたい。プロジェクトの構成がわかったら、プロジェクトの構成に応じて異なるライブラリ名をリンクするように実行可能プログラムに指示したいと考えています。プロジェクト構成を伝えることができるCMakeに変数があるかどうか疑問に思っていました。そのような変数が存在する場合、私の作業はより簡単になります:

if (Project_Configure_Name STREQUAL "Debug")
   #do some thing
elseif (Project_Configure_Name STREQUAL "Release")
   #do some thing
endif()
4

2 に答える 2

9

http://cmake.org/cmake/help/v2.8.8/cmake.html#command:target_link_librariesによると、構成に従ってライブラリを指定できます。次に例を示します。

target_link_libraries(mytarget
  debug      mydebuglibrary
  optimized  myreleaselibrary
)

optimizedモードは、 debug ではないすべての構成を意味することに注意してください。

以下は、より複雑ですが、より制御可能なソリューションです。

インポートされたライブラリ (cmake プロジェクトでコンパイルされていない) にリンクしていると仮定すると、次を使用して追加できます。

add_library(foo STATIC IMPORTED)
set_property(TARGET foo PROPERTY IMPORTED_LOCATION_RELEASE c:/path/to/foo.lib)
set_property(TARGET foo PROPERTY IMPORTED_LOCATION_DEBUG   c:/path/to/foo_d.lib)
add_executable(myexe src1.c src2.c)
target_link_libraries(myexe foo)

詳細については、 http://www.cmake.org/Wiki/CMake/Tutorials/Exporting_and_Importing_Targetsを参照してください。

于 2013-06-12T16:31:19.053 に答える
0

常に別の方法があります。

  if(CMAKE_BUILD_TYPE MATCHES "release")

    SET(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE})

  else(CMAKE_BUILD_TYPE MATCHES "debug")

     SET(CMAKE_BUILD_TYPE "debug")

   endif(CMAKE_BUILD_TYPE MATCHES "release")

変数 CMAKE_BUILD_TYPE を使用できます。CMAKE の呼び出しの開始時にこの変数を変更することもできます。

cmake .. -DCMAKE_BUILD_TYPE:STRING=debug

次に、この変数をビルド構成のインジケーターとして使用できます。

于 2013-06-13T09:07:50.620 に答える