Clion how to add files to a project
Solution 1
CLion parses the CMakeLists.txt
and uses it to generate a project view, but I believe the only way to add files to the project is to edit the CMakeLists.txt
to include those files. I expect that eventually this will change similar to the way IntelliJ integrates with a pom.xml
file in a Java project, but for now you edit the CMakeLists.txt
.
Solution 2
There is also a way to make CLion to add any cpp and h files (I don't know why don't they do it by default) and is to add this line:
file(GLOB SOURCES
*.h
*.cpp
)
and also edit the line of:
add_executable(ClionProject ${SOURCE_FILES} ${SOURCES})
In this example: ClionProject is actually the name of the project. SOURCES_FILES and SOURCES can be whatever you want.
Another good idea is to go to File -> Settings -> Build, Execution, Deployment -> CMake and tick on "Automatic reload CMake project on editing"
Here is a good starting tutorial: https://www.jetbrains.com/help/clion/2016.3/quick-cmake-tutorial.html
Related videos on Youtube

Comments
-
jkj yuio 6 months
This seems really basic. How can i add files to a project without having to manually edit the
CMakeLists.txt
.For example source files in another directory
-
usr1234567 about 7 yearsCMake is a build-system and not a project management. If you only want to add a header, you don't need to do anything. Please be more precise with your question.
-
jkj yuio about 7 yearsYes, the question relates to limitations with clion not with cmake
-
-
kmac about 7 years+1 You really don't want clion editing your
CMakeLists.txt
. You can look intofile(GLOB ...)
andfile(GLOB_RECURSE ...)
to automatically find newly added source. But you'll have to force CMake to be re-run in order for them to be added. -
legalize about 7 years@kmac I'm not a fan of the
GLOB
approach, particularly if you have platform specific sources and you want to conditionally add them to the project. For simple projects, it's fine, but I prefer adding the files explicitly. -
kmac about 7 yearsYes, this tends to be a hotly debated subject. I think that it is a very useful tool, though not always appropriate. Even in complex projects, if components are broken down into smaller libraries (or even source sub-folders), GLOB can still work well if used judiciously. We're happily working away like this on a project with 400k+ lines of code -- no regrets :).