我正在尝试使用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)
Run Code Online (Sandbox Code Playgroud)
这工作得很好,但似乎不再有诀窍.请问有关类似但更新的解决方法是否可以与CMake 2.8.6和Visual Studio 2010一起使用?
我的问题是这样的:我正在使用Visual Studio 2010开发一个小解析器.我使用CMake作为构建配置工具.
但我发现默认的可执行构建行为,不方便.我想要的是,让我的最终计划位于:
E:/parsec/bin/<exe-name>.<build-type>.exe
Run Code Online (Sandbox Code Playgroud)
而不是
E:/parsec/bin/<build-type>/<exe-name>.exe
Run Code Online (Sandbox Code Playgroud)
你会怎么用CMake做到这一点?
我需要做的是设置我的可加密名称
program-debug for debug builds and
program-release(or whatever) for other builds
Run Code Online (Sandbox Code Playgroud)
我希望以真正的跨平台方式实现这一点,同样非常重要 - 我希望以XCode和VS2008为目标 - 所以当我在一种下拉列表中更改配置时,它还必须具有正确的输出名称!我不想用其他-D选项重新生成.vcproj或.xcodeproj(但如果找不到解决方案,我将不得不这样做)
AFAIK cmake变量CMAKE_BUILD_TYPE应该适用于基于make的生成器 - 在make时评估in (如果我错了,请纠正我)
基本上,它是如何根据某些IDE /构建系统中的配置来设置目标选项(而非nessesary名称).它可能对整体cmake目标来说过于具体,但也许你可以提供帮助.
非常感谢!
我想为库实现一个类似于这里提到的命名方案:x32 vs x64的库名
设置CMakeLists.txt文件以创建静态库
add_library(test test.h test.cpp)
Run Code Online (Sandbox Code Playgroud)
从cmake列表创建Visual Studio解决方案后,将以如下方式设置项目:将调试库test.lib写入/x64/Debug/test.lib,将发行版本写入/x64/Release/test.lib。我宁愿将它们都写/lib/在调试版本上,但要在调试版本后加上“ d”。这个想法是要
/lib/test.lib
/lib/testd.lib
Run Code Online (Sandbox Code Playgroud)
如果可能的话,还有一个用于64位版本的附加后缀
/lib/test.lib
/lib/test64.lib
/lib/testd.lib
/lib/test64d.lib
Run Code Online (Sandbox Code Playgroud)
有没有简单的方法可以做到这一点?
编辑:以后可以使用这样的库在项目中很好地使用它: 在Windows的Cmake中为Debug和Release版本链接不同的库?
编辑:我在从输出中删除Debug和Release文件夹时遇到问题,可以通过以下答案解决:如何不将Release或Debug添加到输出路径?