1
set(TestProject_additional_libs
        optimized  foobar.lib   
        debug   foobard.lib    
}  

特にここで最適化/デバッグとはどういう意味ですか? これは、cmake を使用してライブラリを追加する標準的な方法ですか?

4

2 に答える 2

1

私には「誤用」のように見えます。それらはすべて変数に割り当てられているだけですTestProject_additional_libstarget_link_librariesのようなもので展開されると、おそらく後で魔法が起こります。私はそのようなことができるとは知りませんでした。しかし実際、このように書かれていると実際に何が起こっているのかは明らかではありません。

前述のリンクからマニュアルを引用する:

「debug」、「optimized」、または「general」キーワードは、その直後のライブラリが対応するビルド構成にのみ使用されることを示します。

于 2012-06-19T23:26:07.100 に答える
1

これは variable の値をTestProject_additional_libsセミコロンで区切られたリストに設定しますoptimized;foobar.lib;debug;foobard.lib

通常、最適化されたビルド (Release など)に使用する必要があり、デバッグ ビルドで使用する必要があることを示す${TestProject_additional_libs}ために、target_link_librariesコマンドで使用されます。foobar.libfoobard.lib

target_link_libraries(<target> <files> ${TestProject_additional_libs})

一時変数の作成を避けるために、target_link_libraries呼び出し自体で同様の構文を使用することもできます。

target_link_libraries(<target> <files> optimized foobar.lib debug foobard.lib)
于 2012-06-19T23:27:30.327 に答える