c++ - 如何设置 CMAKE_INTDIR 或 CMAKE_CFG_INTDIR 来移除项目配置?

标签 c++ visual-studio-2010 cmake

现在我正在使用 CMake 创建一个 VC 10 项目。我发现的一个问题是输出库或执行程序的路径与项目配置(调试或发布)有关。为了说明这一点,我举了下面的例子:

  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 ...)设置的路径 功能。我想要一个一致的结果。

最佳答案

本题视为重复题,一种可能的解法如下:

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 )

关于c++ - 如何设置 CMAKE_INTDIR 或 CMAKE_CFG_INTDIR 来移除项目配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12509786/

相关文章:

c# - 如何在 Visual Studio 2010 中引用辅助项目

visual-studio-2010 - Visual Studio 2010 中是否有键盘快捷键可以在方法之间移动光标?

c++ - 如何修复 stb_image 库的 alpha

c - 在 Windows 中将 Graphviz 与 Clion 结合使用

c++ - 插入函数中的迭代器集

c++ - 在 Windows 中渲染背景桌面的实时预览

c++ - 模板和继承打破了严格的别名规则

c++ - 如何使用 CMake 将 vtk 库链接到多个源文件?

c++ - 如何更改 C 编译器而不以 cl.exe 开关结束?

python - 在 C++ 中的特定索引之后,是否有一种直接的方法来获取 vector 中的所有项目?