我正在尝试使用Visual Studio 2010在几年前构建一个基于CMake的项目,并且我遇到了与项目的输出目录有关的问题。 Visual Studio在输出二进制文件时一直非常热衷于添加Debug /和Release /子目录,由于各种原因,我一直非常热衷于删除它们 - 现在我正在使用新版本的CMake和新版本的Visual Studio,CMake中的旧解决方案似乎不再起作用,我正在寻找找到“新”方法。
使用以前版本的CMake(2.6)和以前版本的Visual Studio(2008),我使用了以下内容:
IF(MSVC_IDE)
# A hack to get around the "Debug" and "Release" directories Visual Studio tries to add
SET_TARGET_PROPERTIES(${targetname} PROPERTIES PREFIX "../")
SET_TARGET_PROPERTIES(${targetname} PROPERTIES IMPORT_PREFIX "../")
ENDIF(MSVC_IDE)
这很好用,但似乎不再耍手段了。有没有人知道类似但更新的解决方法可以与CMake 2.8.6和Visual Studio 2010一起使用?
答案 0 :(得分:54)
这取决于您想要什么,但我建议您查看可用的target properties,类似于this question。
这取决于你想要什么。对于每个目标,您可以手动设置library_output_directory或runtime_output_directory属性。
if ( MSVC )
set_target_properties( ${targetname} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${youroutputdirectory} )
set_target_properties( ${targetname} PROPERTIES LIBRARY_OUTPUT_DIRECTORY_DEBUG ${youroutputdirectory} )
set_target_properties( ${targetname} PROPERTIES LIBRARY_OUTPUT_DIRECTORY_RELEASE ${youroutputdirectory} )
# etc for the other available configuration types (MinSizeRel, RelWithDebInfo)
endif ( MSVC )
您也可以使用以下内容对所有子项目进行全局操作:
# First for the generic no-config case (e.g. with mingw)
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${youroutputdirectory} )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${youroutputdirectory} )
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${youroutputdirectory} )
# Second, for multi-config builds (e.g. msvc)
foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )
string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG )
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${youroutputdirectory} )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${youroutputdirectory} )
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${youroutputdirectory} )
endforeach( OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES )
答案 1 :(得分:4)
在当前版本的CMake中,您可以使用LIBRARY_OUTPUT_DIRECTORY
的生成器表达式来避免配置特定的后缀。
我刚刚添加了preg_match_all( apply_filters( "wpht_regex_pattern", '/#(\S+)/u' ), strip_tags($content), $hashtags );
,它总是扩展到无。这看起来有点奇怪,但它确实有效,并且它不是那么奇怪,你不能用简短的评论来解释它:
$<$<CONFIG:Debug>:>
答案 2 :(得分:0)
https://cmake.org/cmake/help/latest/prop_tgt/LIBRARY_OUTPUT_DIRECTORY.html解释说:
多配置生成器(VS,Xcode)附加每个配置 子目录到指定目录,除非生成器表达式 使用。
因此,唯一的解决方法是使用生成器表达式。一种很酷的方法是在路径末尾使用$ <0:>。因此,如果您的路径是/ what / ever /,则需要将其替换为/ what / ever / $ <0:>。
示例,目标:Nuua,路径:C:/ Nuua / bin /
set_target_properties(nuua PROPERTIES RUNTIME_OUTPUT_DIRECTORY C:/Nuua/bin/$<0:>)