How to add different directories in CMakeLists.txt?
I have source files in src, headers in include and few files in tests directory. The main function (in src) is calling functions which are defined in file from tests.
cmake_minimum_required(VERSION 2.8.9)
project(multiDirTest)
include_directories(include)
set(SOURCES src/app.c tests/test.c)
#file(GLOB SOURCES "src/*.c")
add_executable(hello $SOURCES)
Two files are in different directories (src and tests).
How to make it work ?
cmake
add a comment |
I have source files in src, headers in include and few files in tests directory. The main function (in src) is calling functions which are defined in file from tests.
cmake_minimum_required(VERSION 2.8.9)
project(multiDirTest)
include_directories(include)
set(SOURCES src/app.c tests/test.c)
#file(GLOB SOURCES "src/*.c")
add_executable(hello $SOURCES)
Two files are in different directories (src and tests).
How to make it work ?
cmake
Have you thought about creating two separate targets, one library target for src/app.c and one test executable target + test definintion for test.c? You can then link the test target against the library.
– KlingonJoe
Nov 12 at 8:24
No. only one target. Actually im just trying out sample example. Here, test.c contains function defination which is called by app.c but both are kept at different places.
– Akhilesh Sarda
Nov 13 at 12:38
add a comment |
I have source files in src, headers in include and few files in tests directory. The main function (in src) is calling functions which are defined in file from tests.
cmake_minimum_required(VERSION 2.8.9)
project(multiDirTest)
include_directories(include)
set(SOURCES src/app.c tests/test.c)
#file(GLOB SOURCES "src/*.c")
add_executable(hello $SOURCES)
Two files are in different directories (src and tests).
How to make it work ?
cmake
I have source files in src, headers in include and few files in tests directory. The main function (in src) is calling functions which are defined in file from tests.
cmake_minimum_required(VERSION 2.8.9)
project(multiDirTest)
include_directories(include)
set(SOURCES src/app.c tests/test.c)
#file(GLOB SOURCES "src/*.c")
add_executable(hello $SOURCES)
Two files are in different directories (src and tests).
How to make it work ?
cmake
cmake
asked Nov 12 at 7:11
Akhilesh Sarda
33
33
Have you thought about creating two separate targets, one library target for src/app.c and one test executable target + test definintion for test.c? You can then link the test target against the library.
– KlingonJoe
Nov 12 at 8:24
No. only one target. Actually im just trying out sample example. Here, test.c contains function defination which is called by app.c but both are kept at different places.
– Akhilesh Sarda
Nov 13 at 12:38
add a comment |
Have you thought about creating two separate targets, one library target for src/app.c and one test executable target + test definintion for test.c? You can then link the test target against the library.
– KlingonJoe
Nov 12 at 8:24
No. only one target. Actually im just trying out sample example. Here, test.c contains function defination which is called by app.c but both are kept at different places.
– Akhilesh Sarda
Nov 13 at 12:38
Have you thought about creating two separate targets, one library target for src/app.c and one test executable target + test definintion for test.c? You can then link the test target against the library.
– KlingonJoe
Nov 12 at 8:24
Have you thought about creating two separate targets, one library target for src/app.c and one test executable target + test definintion for test.c? You can then link the test target against the library.
– KlingonJoe
Nov 12 at 8:24
No. only one target. Actually im just trying out sample example. Here, test.c contains function defination which is called by app.c but both are kept at different places.
– Akhilesh Sarda
Nov 13 at 12:38
No. only one target. Actually im just trying out sample example. Here, test.c contains function defination which is called by app.c but both are kept at different places.
– Akhilesh Sarda
Nov 13 at 12:38
add a comment |
2 Answers
2
active
oldest
votes
I just tried with an identical CMakeLists.txt file as yours. The CMakeLists.txt file should be outside all those subdirectories. You can create a build directory out at that level as well, so you have directories
build
include
src
test
Then just issue
cd build
cmake ..
You should still have only one main, despite the two directories. If you want to run tests, you can pass command line arguments into main to indicate to run the tests. In other words, you do not necessarily need a separate main for testing.
add a comment |
The same thing i was trying. It was able to cmake it successfully but while doing #make it was giving error at
/root/multi_dir/src/app.c:2:18: fatal error: test.c: No such file or directory
#include "test.c"
as i was including file test.c file in app.c (#include "test.c")
Then i removed "#include "test.c" from app.c and retried. It worked.
Thanks for response.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53257366%2fhow-to-add-different-directories-in-cmakelists-txt%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
I just tried with an identical CMakeLists.txt file as yours. The CMakeLists.txt file should be outside all those subdirectories. You can create a build directory out at that level as well, so you have directories
build
include
src
test
Then just issue
cd build
cmake ..
You should still have only one main, despite the two directories. If you want to run tests, you can pass command line arguments into main to indicate to run the tests. In other words, you do not necessarily need a separate main for testing.
add a comment |
I just tried with an identical CMakeLists.txt file as yours. The CMakeLists.txt file should be outside all those subdirectories. You can create a build directory out at that level as well, so you have directories
build
include
src
test
Then just issue
cd build
cmake ..
You should still have only one main, despite the two directories. If you want to run tests, you can pass command line arguments into main to indicate to run the tests. In other words, you do not necessarily need a separate main for testing.
add a comment |
I just tried with an identical CMakeLists.txt file as yours. The CMakeLists.txt file should be outside all those subdirectories. You can create a build directory out at that level as well, so you have directories
build
include
src
test
Then just issue
cd build
cmake ..
You should still have only one main, despite the two directories. If you want to run tests, you can pass command line arguments into main to indicate to run the tests. In other words, you do not necessarily need a separate main for testing.
I just tried with an identical CMakeLists.txt file as yours. The CMakeLists.txt file should be outside all those subdirectories. You can create a build directory out at that level as well, so you have directories
build
include
src
test
Then just issue
cd build
cmake ..
You should still have only one main, despite the two directories. If you want to run tests, you can pass command line arguments into main to indicate to run the tests. In other words, you do not necessarily need a separate main for testing.
edited Nov 14 at 11:41
answered Nov 14 at 11:26
Overtime
265
265
add a comment |
add a comment |
The same thing i was trying. It was able to cmake it successfully but while doing #make it was giving error at
/root/multi_dir/src/app.c:2:18: fatal error: test.c: No such file or directory
#include "test.c"
as i was including file test.c file in app.c (#include "test.c")
Then i removed "#include "test.c" from app.c and retried. It worked.
Thanks for response.
add a comment |
The same thing i was trying. It was able to cmake it successfully but while doing #make it was giving error at
/root/multi_dir/src/app.c:2:18: fatal error: test.c: No such file or directory
#include "test.c"
as i was including file test.c file in app.c (#include "test.c")
Then i removed "#include "test.c" from app.c and retried. It worked.
Thanks for response.
add a comment |
The same thing i was trying. It was able to cmake it successfully but while doing #make it was giving error at
/root/multi_dir/src/app.c:2:18: fatal error: test.c: No such file or directory
#include "test.c"
as i was including file test.c file in app.c (#include "test.c")
Then i removed "#include "test.c" from app.c and retried. It worked.
Thanks for response.
The same thing i was trying. It was able to cmake it successfully but while doing #make it was giving error at
/root/multi_dir/src/app.c:2:18: fatal error: test.c: No such file or directory
#include "test.c"
as i was including file test.c file in app.c (#include "test.c")
Then i removed "#include "test.c" from app.c and retried. It worked.
Thanks for response.
answered Nov 14 at 12:17
Akhilesh Sarda
33
33
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53257366%2fhow-to-add-different-directories-in-cmakelists-txt%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Have you thought about creating two separate targets, one library target for src/app.c and one test executable target + test definintion for test.c? You can then link the test target against the library.
– KlingonJoe
Nov 12 at 8:24
No. only one target. Actually im just trying out sample example. Here, test.c contains function defination which is called by app.c but both are kept at different places.
– Akhilesh Sarda
Nov 13 at 12:38