我对CMake的缓存变量感到困惑:
案例1:CACHE + FORCE
设置(CMAKE_CXX_FLAGS“我标志”缓存字符串“强制”)
- **First CMake run:** `"myflags"` appears in the `CMakeCache.txt` file as intended.
- **Command line options:** command line options do not override `"myflags"` - seems like `FORCE` has higher priority than
上下文
我有一个超级构建CMake项目,它集成了一个foo CMake项目(想想FetchContent()或add_subdirectory())。
我希望能够更改foo中缓存变量的值(即不喜欢默认值)
问:我怎么能做到这一点?
这是一个简单的测试。
注意:我还测试了一个“选项()”,看看在这种情况下它是如何平滑的。
协议
布局CMakeLists.txt:
# This is a super build project
cmake_minimum_required(VERSION 3.0)
project(SuperBuild VERSION 1.0 LANGUAGES CXX)
#
我正在为带有导出目标的项目编写一个MyPackageConfig文件,以便其他项目可以轻松地找到MyPackage及其依赖项。看起来是这样的:
include(CMakeFindDependencyMacro)
find_dependency(LIB1_WITHOUT_CMAKE_CONFIG)
find_dependency(LIB2_WITH_CMAKE_CONFIG)
include (Some/Install/Dir/MyPackageTargets.cmake)
我想知道在MyPackageConfig.cmake调用之前向find_dependency添加以下行是否明智
# F
我试图在Windows上使用cmake构建C++项目。但我发现一个错误:
CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.3/Modules/FindPackageH
andleStandardArgs.cmake:148 (message):
Could NOT find PythonLibs (missing: PYTHON_LIBRARIES) (found suitable
version "3.4.1", minimum required is "3.4")
Call Stac
我正在尝试使用CMake交叉编译程序,但这条消息失败了:
/bin/sh: 1: Syntax error: ";;" unexpected
该程序使用原始的Makefile完美地编译。
这是我的CMake文件:
cmake_minimum_required(VERSION 3.9)
project(my_target LANGUAGES CUDA CXX C)
include(CheckLanguage)
check_language(CUDA)
# STD
if (NOT DEFINED CMAKE_CUDA_STANDARD)
set(CMAKE_CU
我是Apache、Cmake和Python的新手。我已经成功地在Debian上构建了Qpid并运行了一些测试。我现在正试图在Windows上构建Qpid,这样我就可以编写一个C#客户端,但是似乎有些地方不对劲。当我运行cmake命令时,它最终会给我以下输出:
Please wait while cmake processes CMakeLists.txt files....
C:/Program Files (x86)/Python330/python.exe: can't open file 'setup.py': [Errno 2] No such file or
我不知道在哪里设置cmake_policy。这个已经解释了cmake_policy。但不确定该在哪里制定政策。我使用cmake来构建Opencv,我有很多警告,比如
CMake Warning (dev) at cuda_compile_generated_row_filter.2.cu.o.cmake:137 (if):
Policy CMP0054 is not set: Only interpret if() arguments as variables or
keywords when unquoted. Run "cmake --help-policy CMP005
我有一个基于QtCreator的基于cmake的C++项目。我手动编写了CMakeLists.txt文件。从QtCreator的命令行构建时,我得到了如下目录结构:
MyProj/ - source code
MyProj_build/ - object files and executable; I launch cmake from here
现在我想把build目录放在另一个磁盘上(一个ram磁盘):
/PathToRamDisk/MyProj_build/
从命令行构建时,我从新的构建目录启动cmake/make,所有生成的文件都位于该目录中。很好。
在
当我想为opencv 3.3.0创建visual studio 15(2017) make文件时,它给我这个错误消息:error in configuration process, project files maybe invalid和这些:
CMake Deprecation Warning at CMakeLists.txt:81 (cmake_policy):
The OLD behavior for policy CMP0020 will be removed from a future version
of CMake.
The cmake-policies(7) m
我正在尝试使用cmake的find_package函数来查找glfw3的安装,我不太确定我是否理解这些说明。我已经下载了glfw3并遵循了构建的说明。
下载src,转到根目录,并运行cmake ..。
然后在visual中打开主解决方案glfw.sln。我建立了解决方案,一切似乎都做得很好。我可以看到库是在哪里创建的,以及所有的东西。在我自己的cmake项目中,当我使用find_package(glfw3 REQUIRED)时,我会收到以下错误:
By not providing "Findglfw.cmake" in CMAKE_MODULE_PATH this projec
我如何告诉cmake它应该在哪里输出它的构建数据?
假设我有一个名为src/的源代码的dir,然后由于cmake输出了很多文件,我希望他将所有这些都放在一个名为build/的dir中。但是我希望他将生成的Makefile放在项目根中,这样我就不必进入build来构建应用程序了。
这和cmake有可能吗?
如果我在构建dir中有趣地使用cmake,我已经设法将cmake输出如下:
cd build/
cmake ../src/
make
./hello
但是最好留在项目根目录中,并键入类似的内容
cmake
make
./hello
我想我需要在项目根目录中放置一个CMakeList.txt