Reputation: 9
need some help with using a 3rd party makefile when building my own project.
Upvotes: 0
Views: 3961
Reputation: 2747
There isn't a way to what you want directly. CMake doesn't provide a facility to include files into its generated files. (ie: include a "3rdparty.mk
" into a CMake generated Makefile
.) Nor can you directly include a "generated-file-type" (ie: a Makefile) into a CMakeLists.txt
. CMake's ExternalProject won't let you do that either.
What you need to do is somehow "parse" the makefile that has the information that you desire. There are a myriad of ways that you can do this. For example, you could write a shell-script wrapper that would grep your makefile for what you need then construct a CMake command line with the variables you want defined, and output it or call cmake
for you. Depending on how comfortable you are with shell (or perl, python, etc.) you might feel this is the best option.
If you know these values will never (or very rarely change), you can hard code them in to your CMakeLists.txt
(not recommended) or into a file you can include()
(better).
You could also stay in CMake-land and use CMake's ExternalProject to help you. Using ExternalProject, you can:
make
on those patched makefilesNow, this patch that I mentioned is something that you'd have to write yourself, and keep with the source of your primary project. The content of this patch would be a new target for make that would write a file that you could include in your CMakeLists.txt
via include()
. You could start simply, and have this new make target (eg: make output_variables
) write a list of set()
commands to lib_A.cmake
. After comfortable with that, you could move on to more complicated output; like writing a lib_A-config.cmake
file that CMake's find_package()
would understand.
Granted, the last option is probably the most complicated but it might make maintenance of your primary project easier, reducing pain in the future. You'll also gain a deeper understanding of CMake.
Upvotes: 2