2009-11-23 27 views
2

我一直在制作一款旧游戏,我创建了CMake文件以摆脱Makefiles和Visual Studio项目的组合。一切正常,但我很难弄清楚什么是开发人员指定输出文件在运行时的复制位置的正确方法。在CMake中为每个开发人员定制安装输出目录的正确方法是什么?

问题是,在测试代码之前,有很多DLL和一些自定义目标需要将其输出复制到包含游戏数据(级别,艺术,声音等)的目录结构中。

我的安装命令当前使用了一个变量,我在顶层CMakeLists.txt中'设置'来指定输出目录。我试着用cmake命令行上的-DD3_GAMEDIR覆盖它。该变量被设置在CMakeCache中,但SET命令似乎仍然覆盖它。

在使用SET查看用户是否指定了一个值之前,我应该检查变量的长度吗?这对我来说似乎是一种破解,但我很难找到正确的方法来做到这一点。

谢谢!

回答

1

这里是anwser,根据您的CMake版本:关于使用各种CMAKE_INSTALL_PREFIXPROJECT_SOURCE_DIRPROJECT_BINARY_DIR

SET(CMAKE_VERSION "${CMAKE_CACHE_MAJOR_VERSION}.${CMAKE_CACHE_MINOR_VERSION}") 
IF("${CMAKE_VERSION}" STRGREATER "2.4") 
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY /path/of/your/install/${CMAKE_BUILD_TYPE}/bin) 
SET(CMAKE_LIBRARY_OUTPUT_PATH /path/of/your/install/${CMAKE_BUILD_TYPE}/lib) 
ELSE("${CMAKE_VERSION}" STRGREATER "2.4") 
SET(EXECUTABLE_OUTPUT_PATH /path/of/your/install/${CMAKE_BUILD_TYPE}/bin) 
SET(LIBRARY_OUTPUT_PATH /path/of/your/install/${CMAKE_BUILD_TYPE}/lib) 
ENDIF("${CMAKE_VERSION}" STRGREATER "2.4") 
3

安装目标支持DESTDIR参数,所以你可以这样做:

make install DESTDIR="C:\RootGameDir"

另一种选择是只设置变量,如果它尚未设置(if(myVar)),但我个人更喜欢DESTDIR解决方案。

相关问题