I have a CMakeLists.txt in my project root and one in my /src folder. The one in the /src folder only contains a variable with the .cpp files (set (SOURCEFILES main.cpp foo.cpp)
) and in the root CMakeLists.txt I do add_subdirectory(src)
and later I do add_executable(MyApp ${SOURCEFILES})
.
But cmake gives me the error
add_executable called with incorrect number of arguments, no sources provided
How do I get cmake to see the variable? I read that cmake only knows global variables, but that's obviously not the case...
Add a subdirectory to the build. Adds a subdirectory to the build. The source_dir specifies the directory in which the source CMakeLists.
You can use the command line to set entries in the Cache with the syntax cmake -D var:type=value , just cmake -D var=value or with cmake -C CMakeInitialCache. cmake .
Use the syntax $ENV{VAR} to read environment variable VAR . To test whether an environment variable is defined, use the signature if(DEFINED ENV{<name>}) of the if() command. For general information on environment variables, see the Environment Variables section in the cmake-language(7) manual.
The path to the top level of the source tree. This is the full path to the top level of the current CMake source tree. For an in-source build, this would be the same as CMAKE_BINARY_DIR .
As mentioned in the documentation of the set command, each directory added with add_subdirectory
or each function declared with function
creates a new scope.
The new child scope inherits all variable definitions from its parent scope. Variable assignments in the new child scope with the set
command will only be visible in the child scope unless the PARENT_SCOPE
option is used.
To make the SOURCEFILES
assignment visible in the root folder of your project, try:
set (SOURCEFILES main.cpp foo.cpp PARENT_SCOPE)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With