我想做这样的事情:
$ cmake -E "find_package(Boost)"
Run Code Online (Sandbox Code Playgroud)
看看是成功还是失败?(即,这样我可以对项目进行一些依赖性检查,并尝试在 cmake 实际运行 CMakeLists.txt 之前安装所有这些项目。
我知道 cmake 已经有 -E 标志,但是当我运行它时,我只得到一小部分可用命令:
Usage: cmake -E [command] [arguments ...]
Available commands:
chdir dir cmd [args]... - run command in a given directory
compare_files file1 file2 - check if file1 is same as file2
copy file destination - copy file to destination (either file or directory)
copy_directory source destination - copy directory 'source' content to directory 'destination'
copy_if_different in-file out-file - copy file if input has changed
echo [string]... - displays arguments as text
echo_append [string]... - displays arguments as text but no new line
environment - display the current environment
make_directory dir - create a directory
md5sum file1 [...] - compute md5sum of files
remove [-f] file1 file2 ... - remove the file(s), use -f to force it
remove_directory dir - remove a directory and its contents
rename oldname newname - rename a file or directory (on one volume)
tar [cxt][vfz][cvfj] file.tar [file/dir1 file/dir2 ...]
- create or extract a tar or zip archive
time command [args] ... - run command and return elapsed time
touch file - touch a file.
touch_nocreate file - touch a file but do not create it.
Available on UNIX only:
create_symlink old new - create a symbolic link new -> old
Run Code Online (Sandbox Code Playgroud)
有一个-P <source.cmake>标志,可以将 CMake 置于脚本处理模式。您可以使用它执行任意 CMake 代码
execute_process(COMMAND ${CMAKE_PROGRAM} -P yourscript.cmake)
Run Code Online (Sandbox Code Playgroud)
find_package(Boost)但是从您的调用没有任何问题CMakeLists.txt,因为如果没有找到 Boost,它不会立即失败,而是为您提供检查此问题并执行其他操作的方法。
CMakeLists.txt所有依赖性检查都应该在您的脚本内部而不是外部脚本中完成。
| 归档时间: |
|
| 查看次数: |
2637 次 |
| 最近记录: |