当我使用以下对话框
使用clion创建一对新的.h和.cpp文件时如果我选中“添加到目标”并“创建相关标头”,它会修改后来传递给set(SOURCE_FILES ...)
的行add_executable
,以便它包含new_source_file.h
和{ {1}}。如果我正确理解C ++和cmake,那就糟糕了,因为头文件不应该自己编译。我对吗?这是CLION的问题吗?
答案 0 :(得分:4)
将标头添加到CMakeLists.txt是正确的。
CMake足够聪明并且不会在头文件上调用编译器,但是将它们添加到CMakeLists.txt可确保它们在cmake生成的项目中被引用(例如,Visual Studio项目和代码块项目)。这反过来使得在大多数支持cmake的IDE的“项目”窗格中显示标题(而不仅仅是.cpp文件)成为可能。
如果你不添加它们,编译本身应该可以正常工作,但IDE可能不会知道这些标题是你项目的一部分,因此它们不会包含在项目窗格中,在“在项目中搜索“功能等等。
答案 1 :(得分:2)
来自CLion's FAQ:
使用 set(SOURCE_FILES main.cpp)是CLion现在知道main.cpp包含在您的项目中的方式。 至于现在,头文件(如果他们的名字不同于 已添加到SOURCE_FILES变量的相应.cpp文件) 也应该以这种方式包含在项目中。
在您的情况下,您在设置task myTask6 { t ->
description "Here's a task with a configuration block"
group "Some group"
doLast {
println "5"
}
println "2"
t.leftShift { println "4" }
doFirst {
println "3"
}
}
myTask6 << { println "1" }
时无需指定lcm.h
,但也不会受到伤害。