PDA

View Full Version : no rule to make target for importing existing CMake project



mke48
26th February 2015, 19:45
I am trying to import a project with C++ files that I already built using cmake and makefile. I am trying to import it into QT creator. However, after importing the project and trying to debug it, I get the error “no rule to make target”. However, the file it is referring to exists and I never had this problem with that file when using cmake. What is going on?

ChrisW67
27th February 2015, 20:21
The file it is looking for does not exist and cannot be generated from the output of another rule. Since we have no other information to go on there nothing much more we can say. Start at the beginning... Does Qt Creator run cmake on your Makelists.txt file? Does it generate a suitable Makefile? ...

mke48
27th February 2015, 21:26
The file it is looking for does not exist and cannot be generated from the output of another rule. Since we have no other information to go on there nothing much more we can say. Start at the beginning... Does Qt Creator run cmake on your Makelists.txt file? Does it generate a suitable Makefile? ...

When I did `Try File -> Open File or Project` and select the existing CMakeLists.txt file in Project/src/Project/ and then had Qt Creator use cmake to build it, I get the error "CMake Error at CMakeLists.txt:165 (SetupBoost): Unknown CMake command "SetupBoost".

ChrisW67
28th February 2015, 06:01
You have a CMakeLists.txt file referencing a function that CMake cannot find. Where does SetupBoost.cmake exist?

What is the exact sequence of commands executed to run CMake? Working directory? You should see that in the Compile output pane

mke48
28th February 2015, 07:24
You have a CMakeLists.txt file referencing a function that CMake cannot find. Where does SetupBoost.cmake exist?

What is the exact sequence of commands executed to run CMake? Working directory? You should see that in the Compile output pane

SetupBoost.cmake is in ws/mke48/cmake/Project/CMake/SetupBoost.cmake

I generated the makefile (before using Qt) by going to ws/mke48/cmake/Project/Build, running 'ccmake' with the CMakeLists in the root source folder, pressing 'c' for configure, 'g' to generate the makefiles, 'make', 'ccmake' again, setting PRE_BUILD to false/off, 'c' again, 'g' again, and 'make' again

The contents for SetupBoost.cmake is below:


macro(IncludeBoost)
set(Boost_FOUND FOUND)
set(Boost_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/third-party/boost)
endmacro(IncludeBoost)

macro(find_boost)
set(Boost_FOUND FOUND)
set(Boost_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/third-party/boost)
set(Boost_components thread date_time regex filesystem system program_options)
endmacro(find_boost)

macro(SetupBoost TargetName)
# message("Setting up boost for target ${TargetName}")
set(Boost_FOUND FOUND)
set(Boost_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/third-party/boost)
# if (NOT DEFINED Boost_USE_MULTITHREADED)
set(Boost_LIBRARIES boost_thread-mt boost_date_time-mt boost_regex-mt boost_filesystem-mt boost_system-mt boost_program_options-mt)
target_link_libraries(${TargetName} ${Boost_LIBRARIES})
endmacro(SetupBoost)

ChrisW67
28th February 2015, 20:32
Qt Creator will generate the Makefile for you using CMake. If you are reusing an existing build directory then you must make sure you remove the existing Makefile and any CMakeCache.txt files.