Upon researching this issue, all of the questions talk about adding include paths into the CMakeLists.txt file, however none seem to mention a way for Makefiles.
How should I do it, besides the obvious approach of switching to CMake?
For Makefile, you should use CPPFLAGS or CFLAGS to add include search path, e.g. in Makefile:
CPPFLAGS=-I/my/folder
Related
I'm trying to do a project which uses SDL2 to do the graphics.
I want to have my project files in a directory.
I have the functions that manipulate the SDL directly and pictures in a subdirectory of this (UI_library).
I solved the compiling part by adding to the compilation commands
-LUI_library
The problem is that when I run the program, it can't find the pictures, since it assumes they are in the project directory and not in the subdirectory.
Do you know how to fix this without manually changing the code in the subdirectory? There are a lot of references to the pictures in the library.
One way to solve this problem would be addressing the whole path to your file.
For Example:
Windos:
SDL_LoadBMP("C:\Documents\your_image.bmp")
Linux:
SDL_LoadBMP("/home/tigre200/Documents/your_image.bmp")
I have lots of .c files and .h files and I want to compile all of them. But I find I must add every filename manually in tasks.json. Is there any way to link all the .c files in the same folder?
You must still have a make system for your project for instance a Makefile.
So you should create a build rule in your Makefile and the run make from tasks.json
Here is an example I have on github, it is for C++ but the concept is the same for C.
I am starting to learn about CMake and have two questions:
1. Do I need to update the CMakeLists.txt file every time When I add a new file?
Assuming that the size of the project grows, the number of subdirectories and source files in the project will also increased greatly.
In such a case, I guess it is inconvenient to update the CMakelists.txt file whenever a new file or directory is added to the project.
Or is it part of the code management? How is it usually done?
2. In order to build a C Eclipse project(makefile) using CMake, should I write the CMakeList.txt manually?
There are many ways to import CMake projects into Eclipse, but I can't see how to build a C Eclipse project with CMake.
Do I need to update the CMakeLists.txt file every time When I add a new file?
CMake, like GNU make, allows to use wildcards to specify source files.
However, it's good practice to explicitly list files to build, in order to avoid silly mistakes (due, for example, to missing or unexpected files in source directory).
When file list becomes large, build definition files (like CMakeLists.txt) may be split into multiple files.
In order to build a / C Eclipse project(makefile) / using CMake, Should I write CMakelist.txt manually?
I don't know aboud Eclipse, but many IDEs partially/completely automate CMakelists.txt creation. Maybe Eclipse has such a tool too.
Yes write your CMakeLists.txt manually. This can barely be automated, beside adding new header files. There is a way to include all *.h files, but it is not enouraged.
And add every new header file manually. C files are not needed. Adding header files should not happen ofen.
Writing your own CMakeLists.txt files is recommended (at least you understand how CMake works). However, for larger projects it makes sense to automate it. I decided to post my own CMake generator https://github.com/Aenteas/cmake-generator so anyone who wants to implement their customized version could adopt some ideas from here (as it is not likely that my generator would suit your needs perfectly).
I have a project written in C; it has up to six sub-directories with .mk files, a make directory, at least one makefile, and Android.mk files.
I have used Android Studio, ndk, and JNI to build a project which compiles and runs. Now I want to port the above project into it. I have read all the GNU make manual, and know that I can include other make files. My question is would it be better to use gradle to include the make files above, and can I even do it? I have not read the gradle manual yet. It is my understanding that it is a build environment; I am not clear on what are it's differences / similarities with make. And if I can use it to complement make or I just have to pick one and go with it. I did have to edit it to get the JNI project working. My initial goal is to just run the make files in the native project in silent i.e. have them not produce any .o files and see what they do and validate that I am including them; then I want to include all the .c files and build .o files. I know I can do this with include statements in make file and since I have an Android.mk file in my project, I think I can do it through that. But I wonder if in the long run it is better to use gradle. What should I do please?
I'm currently trying to follow the OpenGL intro guide here. I've pulled the finished project straight from the git repo on the site into a new Xcode project, but upon trying to build and run I get a "GL/glew.h: No such file or directory".
I've downloaded glew from the site, and run "make" and "make install". I can see 3 libGLEW files in /usr/lib, and 3 header glew related header files in /usr/include/GL. This all leads me to believe it's installed fine.
Following a couple of ideas from googling, I tried adding the /usr/lib and /usr/include/GL paths to the relevant search paths in the project info, but that still gave the same problem. I also tried adding "-lGLEW" to the 'Other Linker Flags' option.
The include in the C source is simply
#include <GL/glew.h>
What am I missing?!
Thanks for any help
Accepted answer works, the recursive box in XCode also needs to be checked.
If you #include it using #include then the search path has to be simply /usr/include. Try adding /usr/include to your header search paths in your Xcode project and then it should be able to find the header.