Say we have a command call foo
in CMakeLists.txt which is in folder /A
.
foo
is defined in antother CMakeLists.txt which is in folder /B
.
How can one reference to /B/CMakeLists.txt
from within /A/CMakeLists.txt
in order to call foo
?
I tried to set search paths to /B/CMakeLists.txt
via:
CMAKE_INCLUDE_PATH
CMAKE_MODULE_PATH
CMAKE_SOURCE_DIR
but none of them worked.
CMake still complaines Unknown CMake command "foo".
You can edit CMakeLists. txt files right in the Editor. Make sure to reload the project after editing. Automatic reload feature is disabled by default, you can turn it on by selecting the Automatically reload CMake project on editing checkbox in Settings / Preferences | Build, Execution, Deployment | CMake.
CMakeLists. txt is placed at the root of the source tree of any application, library it will work for. If there are multiple modules, and each module can be compiled and built separately, CMakeLists. txt can be inserted into the sub folder.
The first step is to add an option to the top-level CMakeLists. txt file. This option will be displayed in the cmake-gui and ccmake with a default value of ON that can be changed by the user.
That can be done with include
, here's some simple example:
Content of A/CMakeLists.txt
function(foo) message(STATUS "heya") endfunction()
Content of B/CMakeLists.txt
cmake_minimum_required(VERSION 2.8) include(${CMAKE_CURRENT_SOURCE_DIR}/../A/CMakeLists.txt) foo()
Now, including another CMakeLists.txt will also run everything in that file, so you may want to avoid doing that if there are targets in B/CMakeLists.txt
If you can modify your code, it would be better to define your functions in a "top level" CMakeLists.txt before calling add_subdirectory
.
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