|
|
View previous topic :: View next topic |
Author |
Message |
cyrille Guest
|
multi-files project |
Posted: Tue May 04, 2004 2:21 am |
|
|
Hello,
I use CCS compiler (PCM 3.180) in MPLAB Environment (6.50).
I want to BUILD (make) a project (NOT to compile one file main.c including other files .c) as follows :
#include "file1.h"
#include "file2.h"
// etc...
void main(void)
{
function_DEFINED_in_file1();
function_DEFINED_in_file2();
//etc...
}
I don't include file1.c (file2.c) in the project windows...(even if I include them, it doesn't work anyway)
It looks impossible to proceed as above. The only way to solve this problem looks to include files file1.c (file2.c...) in main.c. But I don't want to do like that. Can anyone tell me what I'm wrong ??
Thanks !
[/b] |
|
|
Pete Smith
Joined: 17 Sep 2003 Posts: 55 Location: Chester, UK
|
Re: multi-files project |
Posted: Tue May 04, 2004 6:05 am |
|
|
cyrille wrote: | Hello,
I use CCS compiler (PCM 3.180) in MPLAB Environment (6.50).
I want to BUILD (make) a project (NOT to compile one file main.c including other files .c) as follows :
#include "file1.h"
#include "file2.h"
// etc...
void main(void)
{
function_DEFINED_in_file1();
function_DEFINED_in_file2();
//etc...
}
I don't include file1.c (file2.c) in the project windows...(even if I include them, it doesn't work anyway)
It looks impossible to proceed as above. The only way to solve this problem looks to include files file1.c (file2.c...) in main.c. But I don't want to do like that. Can anyone tell me what I'm wrong ??
Thanks !
[/b] |
In your .h file, do you have any function prototypes?
You will need to include the .c files anyway (unless you're #including them in the .h file). When you say you're including them in the project file, you'll also (AFAIK) need to include them in the file you actually compile.
What I do is to have a list of all my commonly used functions in a "prototypes" file. Sometimes, 2 files can refer to functions within each file, so you can't include one before the other, because it'll never compile.
I then #include all of the relevant files from my library of functions.
The main file ends up looking like this...
Code: |
#include <16F877A.h> // We're running on a 16F876
#device *=16 ADC=10 // Tell compiler that ADC is 10 bits
#fuses NOWDT,HS, NOPROTECT, NOPUT, NOWRT, NOLVP,NOBROWNOUT// Set the fuses
#use delay (clock=8000000,restart_wdt) // PIC is running at4MHz, restarting WDT when delaying
// --------------------------------------------------------------------------------------------------------------------------
#include <my_library.h> // The my Library headers
#include "defines.h" // All the defines
#include <stdlib.h> // Standard Library
#include <string.h> // We want string functions
#include <input.c> // and keyboard input
#include "setup.h" // Setup config
#include "globals.c" // Global variables
#include <my_sbuff.c> // Serial buffered I/O routines
#include <my_mmc.c> // MMC Functions
#include <my_fr2464.c> // I2C functions for the FR2416
#include <my_8583.c> // I2C functions for the PCH8583
#include <my_time.c> // All the time routines
#include <my_eeprom.c> // My e2prom routines
#include <my_io.c> // My I/O routines
#include <my_x10.c> // My X10 routines
#include <my_shell.c> // Shell commands
#include <my_fat.c> // Include FAT functions
#include "inter.c" // Interrupts
#include "startup.c" // Startup functionality
void main(void)
{
....
}
|
Give it a try and tell us how it went.
Pete. |
|
|
cyrille Guest
|
|
Posted: Tue May 04, 2004 7:21 am |
|
|
Indeed with ".c" files included in main it works.
But I'm looking for a modular approach where all objects aren't "visible" from main...
I think I will use the PICC compiler from HT Software. Morever we made tests of code size optimization with this compiler and it look better than the CCS compiler...
Thanks a lot. |
|
|
Ttelmah Guest
|
Re: multi-files project |
Posted: Tue May 04, 2004 7:23 am |
|
|
cyrille wrote: | Hello,
I use CCS compiler (PCM 3.180) in MPLAB Environment (6.50).
I want to BUILD (make) a project (NOT to compile one file main.c including other files .c) as follows :
#include "file1.h"
#include "file2.h"
// etc...
void main(void)
{
function_DEFINED_in_file1();
function_DEFINED_in_file2();
//etc...
}
I don't include file1.c (file2.c) in the project windows...(even if I include them, it doesn't work anyway)
It looks impossible to proceed as above. The only way to solve this problem looks to include files file1.c (file2.c...) in main.c. But I don't want to do like that. Can anyone tell me what I'm wrong ??
Thanks !
[/b] |
I'm afraid you are not missing anything. CCS, does not have a seperate linker. It expects all source to exist is the one 'tree' created by the main file, and other files included. It will quite happily compile and link such sub files, but cannot handle seperate sources.
Best Wishes |
|
|
Kasper
Joined: 14 Jan 2004 Posts: 88 Location: Aurora, Ontario, Canada
|
|
Posted: Tue May 04, 2004 8:28 am |
|
|
Has anyone tried the beta version of the linker they mentioned on their site at one point?.. does it do the job? |
|
|
cyrille Guest
|
|
Posted: Tue May 04, 2004 8:29 am |
|
|
thanks a lot for your help!
I've just tried PICC Lite (freeware for my pic12F629) and it looks better...(build all separate files possibilities, shorter code size in flash and the configuration file is more useful (all registers/bit in registers defined!!!)
I definitively give up CCS...
|
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|