Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmake 使文件为空 我开始使用CGEAR来构建我的C++源文件,我在构建时看到了一个奇怪的结构:_Cmake - Fatal编程技术网

Cmake 使文件为空 我开始使用CGEAR来构建我的C++源文件,我在构建时看到了一个奇怪的结构:

Cmake 使文件为空 我开始使用CGEAR来构建我的C++源文件,我在构建时看到了一个奇怪的结构:,cmake,Cmake,“cmake../”将生成目录结构 “make”将构建所有 任何后续的make命令都不会像预期的那样生成任何内容 “cmake../”将不起任何作用 “make”将重建所有 任何后续的make命令都不会像预期的那样生成任何内容 这是我的CMakelists.txt: cmake_minimum_required(VERSION 2.6) set(CMAKE_CXX_COMPILER "g++") set(CMAKE_CXX_FLAGS "-Wall -pipe") set(var_targe

“cmake../”将生成目录结构

“make”将构建所有

任何后续的make命令都不会像预期的那样生成任何内容

“cmake../”将不起任何作用

“make”将重建所有

任何后续的make命令都不会像预期的那样生成任何内容

这是我的CMakelists.txt:

cmake_minimum_required(VERSION 2.6)

set(CMAKE_CXX_COMPILER "g++")
set(CMAKE_CXX_FLAGS "-Wall -pipe")

set(var_target CommonBase)
set(var_path_source base)
project(Prj_${var_target})

file(GLOB_RECURSE var_sources ${var_path_source}/*.cpp)
add_library(${var_target} SHARED ${var_sources})

install(TARGETS ${var_target} DESTINATION ${PROJECT_SOURCE_DIR}/install)
看起来更好,首先“cmake../”命令文件“CMakeFiles/CommonBase.dir/depend.make”为空,后续的make命令将插入文件依赖项列表

我的CMakelists.txt有问题吗


谢谢这里有几个问题

问题的实际原因是在
项目
命令之前设置了行
(CMAKE\u CXX\u标志…

project
命令在第一次运行时做了大量的工作,实际上清除了这个变量的副作用。因此,在第一次运行CMake时,编译器标志为空,此后始终包含
设置的内容。(这是您第二次运行CMake,这会导致make重新编译所有内容,而不是后续运行的CMake)

尝试用
消息
s包装您的
项目
呼叫,以查看效果:

message("CMAKE_CXX_FLAGS - ${CMAKE_CXX_FLAGS}")
project(Prj_${var_target})
message("CMAKE_CXX_FLAGS - ${CMAKE_CXX_FLAGS}")
删除cmakcache.txt文件(在构建根目录中),然后反复运行
cmake..

要解决此问题,请将
集(CMAKE\u CXX\u FLAGS…
移动到
项目
命令之后


第二个问题是,不建议在CMakeLists.txt中设置
CMAKE\u CXX\u编译器
。请查看下面的评论“”,以及与CMake常见问题解答条目的链接这里有几个问题

问题的实际原因是在
项目
命令之前设置了行
(CMAKE\u CXX\u标志…

project
命令在第一次运行时做了大量的工作,实际上清除了这个变量的副作用。因此,在第一次运行CMake时,编译器标志为空,此后始终包含
设置的内容。(这是您第二次运行CMake,这会导致make重新编译所有内容,而不是后续运行的CMake)

尝试用
消息
s包装您的
项目
呼叫,以查看效果:

message("CMAKE_CXX_FLAGS - ${CMAKE_CXX_FLAGS}")
project(Prj_${var_target})
message("CMAKE_CXX_FLAGS - ${CMAKE_CXX_FLAGS}")
删除cmakcache.txt文件(在构建根目录中),然后反复运行
cmake..

要解决此问题,请将
集(CMAKE\u CXX\u FLAGS…
移动到
项目
命令之后


第二个问题是,不建议在CMakeLists.txt中设置
CMAKE\u CXX\u编译器
。请查看下面的评论“”,以及CMake常见问题解答条目的链接

真的!使用我的原始配置,两次调用“cmake..”可以解决这个问题,导致“make”和“cmake”的任何其他后续组合按预期运行!根据您的建议,第一个调用输出是CMAKE_CXX_标志--墙管。。。CMAKE_CXX_标志-。。。第二个调用输出CMAKE_CXX_标志--壁管CMAKE_CXX_标志--壁管。。。我将删除冗余集(CMAKE_CXX_编译器“g++”),谢谢!真正地使用我的原始配置,两次调用“cmake..”可以解决这个问题,导致“make”和“cmake”的任何其他后续组合按预期运行!根据您的建议,第一个调用输出是CMAKE_CXX_标志--墙管。。。CMAKE_CXX_标志-。。。第二个调用输出CMAKE_CXX_标志--壁管CMAKE_CXX_标志--壁管。。。我将删除冗余集(CMAKE_CXX_编译器“g++”),谢谢!