1

現在、CMake を使用して VC 10 プロジェクトを作成しています。私が見つけた 1 つの問題は、出力ライブラリまたは実行プログラムのパスがプロジェクト構成 (デバッグまたはリリース) に関連付けられていることです。それを説明するために、次の例を挙げます。

  cmake_minimum_required( VERSION 2.6 )
  project (test) 
  add_definitions (-DEXP_STL )
  add_library(lib1 SHARED lib1.cxx)
  set_target_properties(lib1 PROPERTIES LINK_INTERFACE_LIBRARIES "")
  set(LIBRARY_OUTPUT_PATH ${test_SOURCE_DIR})

lib1スクリプトの最後のコマンドは、出力ライブラリ ( ) を のディレクトリに置きたいことを示しています${test_SOURCE_DIR}。ただし、代わりに出力ライブラリが配置されてい ${test_SOURCE_DIR}/Debugます。出力ライブラリが設定したパスに正確にあることを確認するにはどうすればよいか疑問に思っていました。ありがとう!

BWT : この質問をする理由は、Linux 開発環境では、出力ライブラリまたは実行プログラムのパスが、set(LIBRARY_OUTPUT_PATH ...)関数で設定したパスとまったく同じだからです。安定した結果を残したい。

4

1 に答える 1

3

この質問は重複していると見なされます。考えられる解決策の 1 つは次のとおりです。

if (WIN32)
    set(myoutputdirectory ${your_source_file_SOURCE_DIR}/output/win/32)
elseif (CMAKE_COMPILER_IS_GNUCC)
    set(myoutputdirectory ${your_source_file_SOURCE_DIR}/output/linux/32)
elseif(APPLE)
    set(myoutputdirectory ${your_source_file_SOURCE_DIR}/output/mac/32)
endif (WIN32)
# set output parth
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${myoutputdirectory} )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${myoutputdirectory} )
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${myoutputdirectory} )
# for multi-config builds (e.g. msvc)
foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )
    string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG )
    set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${myoutputdirectory} )
    set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${myoutputdirectory} )
    set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${myoutputdirectory} )
endforeach( OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES )
于 2013-06-12T16:06:20.737 に答える