Cmake 使文件为空 我开始使用CGEAR来构建我的C++源文件,我在构建时看到了一个奇怪的结构:
“cmake../”将生成目录结构 “make”将构建所有 任何后续的make命令都不会像预期的那样生成任何内容 “cmake../”将不起任何作用 “make”将重建所有 任何后续的make命令都不会像预期的那样生成任何内容 这是我的CMakelists.txt: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_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++”),谢谢!