'原子解决方案'呢?
EX-自动生成的CMakeLists.txt了 “QT MOC” 文件,然后生成项目,取决于所产生的
# inside project level CMakeLists.txt
# run shell script to create the "moc_GUICreator.cpp" auto-generated source file
if(UNIX)
execute_process(COMMAND "sh" ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_moc.sh WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/scripts)
endif(UNIX)
.cpp文件凡.SH文件包含:
# generate_moc.sh
echo "generating moc file: moc ../include/GUICreator.h -o ../src/moc_GUICreator.cpp "
moc ../include/GUICreator.h -o ../src/moc_GUICreator.cpp
等效的Windows批处理文件, “moc_creator_win.bat”:
moc "GUICreator.h" -o "moc_GUICreator.cpp"
没有尝试过该L在Windows AST位,但它还是极为类似应工作,只是在对的CMakeLists.txt如果(UNIX)块之后:
if(WIN32)
execute_process(COMMAND "cmd" ${CMAKE_CURRENT_SOURCE_DIR}/scripts/moc_creator_win.bat WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/scripts)
endif(WIN32)
所以,基本上,如果你很聪明,你可以做任何你从想要脚本和使用CMake变量作为参数,我不知道你是否可以要求更多...
的一点是要避免“不可移植的构建类型”,除非你真的需要它攻入一个专门的编译器,或者不喜欢使用Qt Designer来放置小部件;-)
我觉得很奇怪,这里的答案是“不”。我刚开始接触cmake,我开始理解如何使用它(而不是试图迫使它做一些它不是专门设计的),比如使用out-of-source构建等。但是我知道cmake与cpack捆绑在一起,它可以在Linux和类似系统上生成tarball。如果tarball需要cmake来构建,我不相信它是一个tarball。 – Steve314 2010-07-15 04:04:12
我会仔细看看CPack;) – Voltaire 2010-07-15 20:43:47
CPack生成的压缩包通常不是用于构建的源代码压缩包,而是用于运行系统的二进制压缩包。 – JesperE 2010-07-15 21:33:37