我最近将一些项目从autotools切换到了cmake.
我喜欢在autotools上的一个常见的事情是 - 如果我进入src构建目录.有config.log/config.status - 其中./configure --params列出了命令的顶部- 因此很容易重新运行以前使用过的命令行标志.
(比如在编译一些东西之后 - 我想添加另一个--enable-this- 所以从config.log/status复制和粘贴 - 然后重新运行./configure --old-params --enable-this)
在cmake中 - 我有一堆 -D标志 - 我怎样才能找到像config.log/status一样的使用命令行 - 用cmake项目?
我知道有CMakeCache ... - 但很难提取使用过的标志
编辑:
我提出了以下解决方案:
#save commandline to rebuild this :)
set(USED_CMD_LINE "cmake ")
set(MY_CMAKE_FLAGS CMAKE_BUILD_TYPE CMAKE_INSTALL_PREFIX ENABLE_SSL ENABLE_LUA ENABLE_SSH ENABLE_SNMP MYSQL_USER MYSQL_PASS MYSQL_HOST MYSQL_DB FULL_FEATURES USE_COVERAGE)
FOREACH(cmd_line_loop IN ITEMS ${MY_CMAKE_FLAGS})
if(${cmd_line_loop})
STRING(CONCAT USED_CMD_LINE ${USED_CMD_LINE} "-D" ${cmd_line_loop} "=" ${${cmd_line_loop}} " ")
endif()
ENDFOREACH(cmd_line_loop)
STRING(CONCAT USED_CMD_LINE ${USED_CMD_LINE} " .. ")
#store to a file aka "config.status"
FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/config.status ${USED_CMD_LINE} )
Run Code Online (Sandbox Code Playgroud)
在build文件夹中创建一个文件config.status - 包含所有set cmake params.
亲们:
CON:
FILE(write?变量MY_CMAKE_FLAGS包含已知标志 - 如果添加了新标志,则需要手动更新问候
CMAKE_EXPORT_COMPILE_COMMANDS一项可能有用的功能是打开项目 CMake 缓存中的标志。在构建过程中,这将使 CMakecompile_commands.json在二进制目录中生成一个 JSON 文件,其中包含所有翻译单元的确切编译器调用。
| 归档时间: |
|
| 查看次数: |
2678 次 |
| 最近记录: |